views:

257

answers:

2

Purpose: I plan to Create a XML file with XmlTextWriter and Modify/Update some Existing Content with XmlNode SelectSingleNode(), node.ChildNode[?].InnerText = someting, etc.

After I created the XML file with XmlTextWriter as below.

XmlTextWriter textWriter = new XmlTextWriter("D:\\learning\\cs\\myTest.xml", System.Text.Encoding.UTF8);

I practiced the code below. But failed to save my XML file.

XmlDocument doc = new XmlDocument();
                doc.Load("D:\\learning\\cs\\myTest.xml");

                XmlNode root = doc.DocumentElement;
                XmlNode myNode;

                myNode= root.SelectSingleNode("descendant::books");

....

 textWriter.Close();

 doc.Save("D:\\learning\\cs\\myTest.xml");  

I found it is not good to produce like my way. Is there any suggestion about it? I am not clear about the concepts and usage of both XmlTextWriter and XmlNode in the same project. Thank you for reading and replies.

+1  A: 

The XmlTextWriter is usually used for generating (not updating) XML content. When you load the xml file into an XmlDocument, you don't need a separate writer.

Just update the node you have selected and .Save() that XmlDocument.

Hans Kesting
+1  A: 

Well, If you want to update a node in XML, the XmlDocument is just OK, you needn't use XmlTextWriter.


            XmlDocument doc = new XmlDocument();
            doc.Load("D:\\build.xml");
            XmlNode root = doc.DocumentElement;
            XmlNode myNode = root.SelectSingleNode("descendant::books");
            myNode.Value = "blabla";
            doc.Save("D:\\build.xml");

jujusharp