Csharp/CSharp Tutorial/XML/XmlElement
Get node children count
<source lang="csharp">using System; using System.Xml; using System.Collections.Generic; using System.Text;
class Program{ static void Main(string[] args) { XmlDocument itemDoc = new XmlDocument(); itemDoc.Load("items.xml"); Console.WriteLine("DocumentElement has {0} children.",itemDoc.DocumentElement.ChildNodes.Count); foreach (XmlNode itemNode in itemDoc.DocumentElement.ChildNodes) { XmlElement itemElement = (XmlElement)itemNode; Console.WriteLine("\n[Item]: {0}\n{1}", itemElement.Attributes["name"].Value,itemElement.Attributes["description"].Value); if (itemNode.ChildNodes.Count == 0) Console.WriteLine("(No additional Information)\n"); else { foreach (XmlNode childNode in itemNode.ChildNodes) { if (childNode.Name.ToUpper() == "ATTRIBUTE") { Console.WriteLine("{0} : {1}", childNode.Attributes["name"].Value, childNode.Attributes["value"].Value); } else if (childNode.Name.ToUpper() == "SPECIALS") { foreach (XmlNode specialNode in childNode.ChildNodes) { Console.WriteLine("*{0}:{1}", specialNode.Attributes["name"].Value, specialNode.Attributes["description"].Value); } } } } } } }</source>
Output child node inner text
<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml;
public class MainClass { public static void Main() { XmlDocument doc = new XmlDocument(); doc.Load("employees.xml"); foreach (XmlNode node in doc.DocumentElement.ChildNodes) { string employeeid = node.Attributes["employeeid"].Value; Console.WriteLine(employeeid); } XmlElement ele= doc.GetElementById("id"); Console.WriteLine(ele.ChildNodes[0].InnerText); Console.WriteLine(ele.ChildNodes[1].InnerText); Console.WriteLine(ele.ChildNodes[2].InnerText); Console.WriteLine(ele.ChildNodes[3].InnerText); } }</source>
Selecting single Node with SelectSingleNode as XmlElement
<source lang="csharp">using System; using System.Collections.Generic; using System.IO; using System.Xml; public class Customer {
public string FirstName { get; set; } public string LastName { get; set; } public string EmailAddress { get; set; } public override string ToString() { return string.Format("{0} {1}\nEmail: {2}", FirstName, LastName, EmailAddress); }
} public class Tester {
static void Main() { List<Customer> customers = new List<Customer>{ new Customer { FirstName = "A", LastName = "G", EmailAddress = "o@a.ru"}, new Customer { FirstName = "B", LastName = "C", EmailAddress = "k@a.ru" }, new Customer { FirstName = "D", LastName = "C", EmailAddress = "d@a.ru" }, new Customer { FirstName = "E", LastName = "G", EmailAddress = "j@a.ru" }, new Customer { FirstName = "L", LastName = "H", EmailAddress = "l@a.ru" } }; XmlDocument customerXml = new XmlDocument(); XmlElement rootElem = customerXml.CreateElement("Customers"); customerXml.AppendChild(rootElem); foreach (Customer customer in customers) { XmlElement customerElem = customerXml.CreateElement("Customer"); XmlAttribute firstNameAttr = customerXml.CreateAttribute("FirstName"); firstNameAttr.Value = customer.FirstName; customerElem.Attributes.Append(firstNameAttr); XmlAttribute lastNameAttr = customerXml.CreateAttribute("LastName"); lastNameAttr.Value = customer.LastName; customerElem.Attributes.Append(lastNameAttr); XmlElement emailAddress = customerXml.CreateElement("EmailAddress"); emailAddress.InnerText = customer.EmailAddress; customerElem.AppendChild(emailAddress); rootElem.AppendChild(customerElem); }
string xPath = "/Customers/Customer[@FirstName="D"]"; XmlElement customerElem1 = customerXml.SelectSingleNode(xPath) as XmlElement; if (customerElem1 != null) { Console.WriteLine(customerElem1.OuterXml); Console.WriteLine("customerElem.HasAttributes = {0}", customerElem1.HasAttributes); } else Console.WriteLine("Not found"); }
}</source>