Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to modify existing XML file with XmlDocument and XmlNode in C#

I already implemented to create the XML file below with XmlTextWriter when application initialization.

And know I don't know how to update the childNode id value with XmlDocument & XmlNode.

Is there some property to update the id value? I tried InnerText but failed. thank you.

<?xml version="1.0" encoding="UTF-8"?> <Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   <License licenseId="" licensePath=""/>   <DataCollections>     <GroupAIDs>       <AID id="100">         <Variable id="200"/>         <Variable id="201"/>       </AID>       <AID id="">         <Variable id="205"/>       </AID>       <AID id="102"/>     </GroupAIDs>     <GroupBIDs>       <BID id="2000">         <AID id="100"/>       </BID>       <BID id="2001">         <AID id="101"/>         <AID id="102"/>       </BID>     </GroupBIDs>     <GroupCIDs>       <BID id="8"/>       <BID id="9"/>       <BID id="10"/>     </GroupCIDs>   </DataCollections> </Equipment> 
like image 874
Nano HE Avatar asked Apr 01 '10 07:04

Nano HE


People also ask

How do you change a value in XML?

A simple technique for changing the value of a node is to use node. Value = "new value"; . The following table lists the node types that this single line of code works on and exactly what data for that node type is changed. The value of the attribute.

How do I dispose of XmlDocument?

The XmlDocument class does not implement IDisposable , so there's no way to force it to release it's resources at will. If you need to free that memory the only way to do that would be xmlDocument = null; and garbage collection will handle the rest.


1 Answers

You need to do something like this:

// instantiate XmlDocument and load XML from file XmlDocument doc = new XmlDocument(); doc.Load(@"D:\test.xml");  // get a list of nodes - in this case, I'm selecting all <AID> nodes under // the <GroupAIDs> node - change to suit your needs XmlNodeList aNodes = doc.SelectNodes("/Equipment/DataCollections/GroupAIDs/AID");  // loop through all AID nodes foreach (XmlNode aNode in aNodes) {    // grab the "id" attribute    XmlAttribute idAttribute = aNode.Attributes["id"];     // check if that attribute even exists...    if (idAttribute != null)    {       // if yes - read its current value       string currentValue = idAttribute.Value;        // here, you can now decide what to do - for demo purposes,       // I just set the ID value to a fixed value if it was empty before       if (string.IsNullOrEmpty(currentValue))       {          idAttribute.Value = "515";       }    } }  // save the XmlDocument back to disk doc.Save(@"D:\test2.xml"); 
like image 179
marc_s Avatar answered Sep 20 '22 16:09

marc_s