//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
}
}
Software Development
software development notes, main category for Cs, Java, and other programming experiences.
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();
}
}
Use Load method in XmlDocument to load xml document
//Order.xml
/*
<?xml version="1.0" ?>
<ord:order xmlns:ord="http://mycompany/OrderML"
xmlns:cli="http://mycompany/ClientML">
<cli:client>
<cli:firstName>Sally</cli:firstName>
<cli:lastName>Sergeyeva</cli:lastName>
</cli:client>
<ord:orderItem itemNumber="3211"/>
<ord:orderItem itemNumber="1155"/>
</ord:order>
*/
using System;
using System.Xml;
class MainClass {
public 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 + " ");
}
}
}
}
Call GetElementsByTagName to get an element
using System;
using System.Xml;
public class MainClass {
private static void Main() {
XmlDocument doc = new XmlDocument();
doc.Load("ProductCatalog.xml");
XmlNodeList prices = doc.GetElementsByTagName("productPrice");
decimal totalPrice = 0;
foreach (XmlNode price in prices) {
totalPrice += Decimal.Parse(price.ChildNodes[0].Value);
}
Console.WriteLine("Total catalog value: " + totalPrice.ToString());
}
}
Save, AppendChild, CreateXmlDeclaration, CreateElement
using System;
using System.Xml;
class MainClass {
public static void Main() {
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(docNode);
XmlNode productsNode = doc.CreateElement("products");
doc.AppendChild(productsNode);
XmlNode productNode = doc.CreateElement("product");
XmlAttribute productAttribute = doc.CreateAttribute("id");
productAttribute.Value = "1";
productNode.Attributes.Append(productAttribute);
productsNode.AppendChild(productNode);
XmlNode nameNode = doc.CreateElement("productName");
nameNode.AppendChild(doc.CreateTextNode("Coffee"));
productNode.AppendChild(nameNode);
XmlNode priceNode = doc.CreateElement("productPrice");
priceNode.AppendChild(doc.CreateTextNode("0.99"));
productNode.AppendChild(priceNode);
productNode = doc.CreateElement("product");
productAttribute = doc.CreateAttribute("id");
productAttribute.Value = "2";
productNode.Attributes.Append(productAttribute);
productsNode.AppendChild(productNode);
nameNode = doc.CreateElement("productName");
nameNode.AppendChild(doc.CreateTextNode("Tea Pot"));
productNode.AppendChild(nameNode);
priceNode = doc.CreateElement("productPrice");
priceNode.AppendChild(doc.CreateTextNode("12.99"));
productNode.AppendChild(priceNode);
doc.Save(Console.Out);
}
}