Possible Duplicate:
How to remove an XmlNode from XmlNodeList
Hi, How can i delete a set of nodes from an XML file.? Here is a code snippet.
string path = @"C:\Documents and Settings\e454935\Desktop\NUnitSettings.xml"; FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument(); xmldoc.Load(fs); fs.Close(); xmldoc.DocumentElement.RemoveChild(xmldoc.DocumentElement.ChildNodes[1]); FileStream WRITER = new FileStream(path, FileMode.Truncate, FileAccess.Write, FileShare.ReadWrite); xmldoc.Save(WRITER); WRITER.Close();
I tried the following code simply to delete a node and got "Object reference not set to an instance of an object." at
xmldoc.DocumentElement.RemoveChild(xmldoc.DocumentElement.ChildNodes[1]);
Here is a sample XML file,
<?xml version="1.0"?> <Xml1> <Settings> <Setting name="DisplayFormat" value="Full" /> <Setting name="File1" value="a" /> <Setting name="File1" value="b" /> <Setting name="File1" value="c" /> <Setting name="File1" value="d" /> </Settings> </Xml1>
Actually from this file i want to delete the Four File1 nodes which has the values "a,b,c,d" and then i want to add a node,
<Setting name="File1" value="e" />
How can i do this.?
node. ParentNode. RemoveChild(node); that is all you need, the node including any children is removed.
In the XML Files explorer, right-click the XML file or XML element that you want to remove and click Delete.
Everything in an XML document is a node. For example, the entire document is the document node, and every element is an element node. Root node. The topmost node of a tree. In the case of XML documents, it is always the document node, and not the top-most element.
You can use Linq to XML to do this:
XDocument doc = XDocument.Load("input.xml"); var q = from node in doc.Descendants("Setting") let attr = node.Attribute("name") where attr != null && attr.Value == "File1" select node; q.ToList().ForEach(x => x.Remove()); doc.Save("output.xml");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With