powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Новый Node в XML
1 сообщений из 1, страница 1 из 1
Новый Node в XML
    #33188043
Sandra2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем простой XML:
---------
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Category>
<CategoryID>1</CategoryID>
<ParentCategoryID>0</ParentCategoryID>
<CategoryDesc>Desc of Category 1</CategoryDesc>
<CategoryText>Text of Category 1</CategoryText>
</Category>
<Category>
<CategoryID>2</CategoryID>
<ParentCategoryID>1</ParentCategoryID>
<CategoryDesc>Desc of Category 2</CategoryDesc>
<CategoryText>Text of Category 2</CategoryText>
</Category>
<Category>
<CategoryID>3</CategoryID>
<ParentCategoryID>2</ParentCategoryID>
<CategoryDesc>Desc of Category 3</CategoryDesc>
<CategoryText>Text of Category 3</CategoryText>
</Category>
</Document>
Нужно добавить в каждый узел <Category> новый елемент <Path>, InnerText которого будет состоять из значенийй <CategoryID> его самого и его предков:
1. если ParentCategoryID равен 0, то <Path>1</Path> будет равен его <CategoryID>.
2. иначе- у второго елемента, например, <Path>2/1</Path>, а у третьего Path будет - <Path>3/2/1</Path>
То есть , если первому и второму добавили елемент <Path> , то третий не будет путешествовать до первого, а возьмет <Path> второго, то есть его родителя.
Тут дан отрывок кода - добавление елемента <Path> в елемент <Category> с
<ParentCategoryID>0</ParentCategoryID>:
---------------
public class _default : System.Web.UI.Page
{
private XmlDocument XMLDoc;
private string XMLFile = "XMlFileName.xml";


private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
XMLDoc = new XmlDocument();
RenderXML();
}
}

--------
public void RenderXML()
{
string strInnerText = string.Empty;
string strParentPath = string.Empty;

XmlTextReader reader = new XmlTextReader(Server.MapPath(XMLFile));
XMLDoc.Load(reader);
reader.Close();
XmlNodeList nodes = XMLDoc.DocumentElement.GetElementsByTagName("Category");
foreach(XmlNode node in NodesList)
{
strInnerText = node.SelectSingleNode("ParentCategoryID").InnerText;
if(strInnerText.Equals(string.Empty))
{
XmlNode NewNode = this.XMLDoc.CreateNode(XmlNodeType.Element, "Path", "");
NewNode.InnerText = node.SelectSingleNode("CategoryID").InnerText;
node.AppendChild(NewNode);
}//if

}//foreach
}
------
Выдает ошибку:
System.ArgumentException: The node to be inserted is from a different document context.
Stack Trace:
[ArgumentException: The node to be inserted is from a different document context.]
System.Xml.XmlNode.AppendChild(XmlNode newChild) +575
PCAT._default.RenderXML() in c:\inetpub\wwwroot\Project12\default.aspx.cs:67
PCAT._default.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\pcat\default.aspx.cs:30
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731

Не могу понять ,в чем проблема, может кто-нибудь имеет замечательные предложения на этот счет?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Новый Node в XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]