Select by path

   
 

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");
    }
}  
           
         
     


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=&#039;novel&#039;]");
        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 + "  ");
            }
        }
    }
}