using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; public class MainClass { public static void Main() { XmlDocument doc = new XmlDocument(); doc.Load("books.xml"); XPathNavigator nav = doc.CreateNavigator(); if (nav.CanEdit) { XPathNodeIterator iter = nav.Select("/bookstore/book/price"); while (iter.MoveNext()) { iter.Current.InsertAfter("<disc>5</disc>"); } } doc.Save("newbooks.xml"); } }
XML-RPC
XPathNodeIterator
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; public class MainClass { public static void Main() { XPathDocument doc = new XPathDocument("books.xml"); XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator(); XPathNodeIterator iter = nav.Select("/bookstore/book"); while (iter.MoveNext()) { XPathNodeIterator newIter = iter.Current.SelectDescendants(XPathNodeType.Element, false); while (newIter.MoveNext()) Console.WriteLine(newIter.Current.Name + ": " + newIter.Current.Value); } Console.WriteLine("Total Cost = " + nav.Evaluate("sum(/bookstore/book/price)")); } }
XPathNavigator
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; public class MainClass { public static void Main() { XPathDocument doc = new XPathDocument("books.xml"); XPathNavigator nav = ((IXPathNavigable)doc).CreateNavigator(); XPathNodeIterator iter = nav.Select("/bookstore/book[@genre='novel']"); while (iter.MoveNext()) { XPathNodeIterator newIter = iter.Current.SelectDescendants(XPathNodeType.Element, false); while (newIter.MoveNext()) Console.WriteLine(newIter.Current.Name + ": " + newIter.Current.Value); } } }
Add XmlElement
//Microsoft Public License (Ms-PL) //http://dbmlmanager.codeplex.com/license #region using using System; using System.Xml; #endregion namespace DbmlManager.Lib.Utility { #region Class Docs /// <summary> /// Summary description for XmlUtil. /// </summary> #endregion public class XmlUtil { // Public Static Methods #region AddXmlElement(XmlDocument xml, XmlNode parent, string nodeName, string nodeText) public static void AddXmlElement(XmlDocument xml, XmlNode parent, string nodeName, string nodeText) { XmlElement node = xml.CreateElement(nodeName); node.InnerText = nodeText; parent.AppendChild(node); } #endregion } }
Find Elements with an XPath Search
using System; using System.Xml; public class XPathSelectNodes { private static void Main() { // Load the document. XmlDocument doc = new XmlDocument(); doc.Load("books.xml"); XmlNodeList nodes = doc.SelectNodes("/books/A/B"); foreach (XmlNode node in nodes) { Console.WriteLine(node.InnerText); } } } /* <books> <A property="a"> <B>text</B> <C>textg</C> <D>99999</D> </A> </books> */
Get XML Nodes in a Specific XML Namespace
using System; using System.Xml; public class SelectNodesByNamespace { private static void Main() { XmlDocument doc = new XmlDocument(); doc.Load("Order.xml"); XmlNodeList matches = doc.GetElementsByTagName("*","http://mycompany/OrderML"); foreach (XmlNode node in matches) { Console.Write(node.Name + " "); foreach (XmlAttribute attribute in node.Attributes) { Console.Write(attribute.Value + " "); } } } }
Use SelectNodes to query nodes by XPath
using System; using System.Xml; class MainClass { private static void Main() { XmlDocument doc = new XmlDocument(); doc.Load("orders.xml"); XmlNodeList nodes = doc.SelectNodes("/Order/Items/Item/Name"); foreach (XmlNode node in nodes) { Console.WriteLine(node.InnerText); } Console.ReadLine(); } }