HighTechTalks DotNet Forums  

Insert / delete ?

Dotnet XML microsoft.public.dotnet.xml


Discuss Insert / delete ? in the Dotnet XML forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Patrick
 
Posts: n/a

Default Insert / delete ? - 06-28-2006 , 06:31 AM






Hi, im trying to first insert a node in the xml file and save it.

XmlDocument mDoc = new XmlDocument();
mDoc.Load("struct.xml");


XmlNode singleNode;
XmlNode newNode = mDoc.CreateNode(XmlNodeType.Element, "page", "");
XmlAttribute mAttr = mDoc.CreateAttribute("id");


singleNode = mDoc.SelectSingleNode("//page[@id=\"" + pageid.Value +
"\"]");

if (singleNode == null)
{
Response.Write("no node found");
return;
}


mAttr.Value = "100";
newNode.Attributes.Append(mAttr);

mDoc.DocumentElement.InsertAfter(newNode, singleNode);

i do find the node with ID number 3 and can retrive it contents, but i cant
insert a new node after it.
Here is the xml file:
<?xml version="1.0"?>
<home>
<page name="Test1" id="1">
<page name="Pagetest1" id="2" src="test1.htm"></page>
<page name="pagetest3" id="3" src="test2.htm"></page>
</page>
<page name="Test2" id="4" src="test1.htm">
<page name="Test23" id="7" src="test1.htm">
<page name="pagetest1" id="10" src="test1.htm"></page>
</page>
<page name="Pagetest1" id="5" src="test1.htm"></page>
<page name="pagetest2" id="6" src="test1.htm"></page>
</page>
</home>

The error message i am getting is:
Exception Details: System.ArgumentException: The reference node is not a
child of this node.

Source Error:

Line 67: newNode.Attributes.Append(mAttr);

Line 68:

Line 69: mDoc.DocumentElement.InsertAfter(newNode, singleNode);



Second question is, how do i delete a node ex. the node with ID nr 3? what
will happen if i delete node with id number 7?



-Patrick



Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Insert / delete ? - 06-28-2006 , 07:04 AM








Patrick wrote:


Quote:
singleNode = mDoc.SelectSingleNode("//page[@id=\"" + pageid.Value +
"\"]");

if (singleNode == null)
{
Response.Write("no node found");
return;
}


mAttr.Value = "100";
newNode.Attributes.Append(mAttr);

mDoc.DocumentElement.InsertAfter(newNode, singleNode);
Use
singleNode.ParentNode.InsertAfter(newNode, singleNode);
You always have to call AppendChild or InsertAfter or InsertBefore on
the new parent node where you want to append or insert the new child.

--

Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/


Reply With Quote
  #3  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Insert / delete ? - 06-28-2006 , 07:06 AM





Patrick wrote:


Quote:
Second question is, how do i delete a node ex. the node with ID nr 3? what
will happen if i delete node with id number 7?
Select the node using some DOM or XPath approach (e.g. SelectSingleNode)
then do
node.ParentNode.RemoveChild(node)

--

Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/


Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.