|
I have trouble with adding a new node <Path> that consists of <CategoryID> itself element and it ansectors
I have input XML file:
<?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>
Ouput XML looks like that:
<?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>
<Path>1</Path>
</Category>
<Category>
<CategoryID>2</CategoryID>
<ParentCategoryID>1</ParentCategoryID>
<CategoryDesc>Desc of Category 2</CategoryDesc>
<CategoryText>Text of Category 2</CategoryText>
<Path>2/1</Path>
</Category>
<Category>
<CategoryID>3</CategoryID>
<ParentCategoryID>2</ParentCategoryID>
<CategoryDesc>Desc of Category 3</CategoryDesc>
<CategoryText>Text of Category 3</CategoryText>
<Path>3/2/1</Path>
</Category>
</Document>
------------
After adding a new node i've follow error:
----------
public class _default : System.Web.UI.Page
{
private XmlDocument XMLDoc;
private string XMLFile = "/forum/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(Parse.Int(strInnerText) == 0)
{
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
------------
All advices will be appreciated!!! Thanks
|
|
|
|
|
|
|
// |