Changing an XmlDocument
In the
previous example, you didn’t actually change the
underlying document. In fact, there’s nothing there
that you couldn’t have done with an
XmlReader. Unlike an XmlReader,
however, the DOM allows you to change an existing XML document.
Suppose you decided to stop validating the inventory records. In
order to make this change, you would need to remove the
DOCTYPE node from all of the XML files. How would
you go about doing this?
The short answer is
XmlNode.RemoveChild( ). This method removes the
node passed in from the object tree. You can read in all the XML
files in the current directory, and remove the
XmlDocumentType node. Then you can serialize the
file back out (with the extension .new so you don’t overwrite
the original) and check that the DOCTYPE node is
gone:
string currentDirectory = Environment.CurrentDirectory;
string [ ] files = Directory.GetFiles(currentDirectory, "*.xml");
foreach (string file in files) {
XmlDocument document = new XmlDocument( );
document.Load(file);
XmlDocumentType documentType = document.DocumentType;
document.RemoveChild(documentType);
document.Save(file + ".new");
}
This
process can be repeated with any type of XmlNode.
For example, you could remove the inventory element, leaving an empty
document, except for the XML declaration. Or you could use
RemoveAll( ) to remove everything in the document
entirely, while leaving the empty file in place:
document.Load(file); document.RemoveAll( );
Tip
If you remove the document ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access