这是使用DOM(Document Object Model 文档对象模型)来处理xml文档的,是来自W3C的官方标准
XmlDocument类是XML文档的.NET表示形式,它代表了内存中树状结构的文档节点
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace XMLConsoleApplication
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("E:\\myWriter.xml");
//遍历
//获取根节点
XmlNode root = xmlDoc.DocumentElement;
Console.WriteLine("根节点 :" + root.Name);
Console.WriteLine("——————————————————————————---");
//获取根节点的下一级子节点lxrs
XmlNodeList lxrs = root.ChildNodes;
for (int i = 0; i < lxrs.Count; i++)
{
//根节点的子节点
XmlNode lxr = lxrs[i];
Console.WriteLine("第一级节点名 :" + lxr.Name);
//节点值
Console.WriteLine("第一级节点值 :" + lxr.InnerText);
Console.WriteLine("第一级节点 :" + lxr.OuterXml);
//判断是否包含子节点
if (lxrs[i].HasChildNodes)
{
//获取lxrs的子节点lxr
XmlNodeList lxrinfos = lxr.ChildNodes;
for (int j = 0; j < lxrinfos.Count; j++)
{
XmlNode lxrinfo = lxrinfos[j];
Console.WriteLine("\t第二级节点名 :" + lxrinfo.Name);
Console.WriteLine("\t第二级节点值 :" + lxrinfo.InnerText);
Console.WriteLine("\t第二级节点 :" + lxrinfo.OuterXml);
}
}
Console.WriteLine("——————————————————————————---");
}
//使用节点属性引用单个节点
Console.WriteLine("使用节点属性引用单个节点");
XmlNode mylxr;
//根节点的第一个子节点lxr
mylxr = root.FirstChild;
Console.WriteLine("根节点的第一个子节点lxr的属性 :" + mylxr.Attributes[0].Name + "--" + mylxr.Attributes[0].InnerText + "--" + mylxr.Attributes[0].InnerXml + "--" + mylxr.Attributes[0].OuterXml);
Console.WriteLine("根节点的第一个子节点lxr :"+mylxr.Name + "--" + mylxr.OuterXml);
//lxr的第一个子节点
mylxr = mylxr.FirstChild;
Console.WriteLine("lxr的第一个子节点 :" + mylxr.Name + "--" + mylxr.OuterXml);
//lxr的第一个子节点的下一个节点
mylxr = mylxr.NextSibling;
Console.WriteLine("lxr的第一个子节点的下一个节点 :" + mylxr.Name + "--" + mylxr.OuterXml);
//lxr的最后一个节点
//因为mylxr现在是lxr的子节点,先要通过mylxr.ParentNode找到父节点lxr,然后去的其最后一个节点
mylxr = mylxr.ParentNode.LastChild;
Console.WriteLine("lxr的最后一个节点 :" + mylxr.Name + "--" + mylxr.OuterXml);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace XMLConsoleApplication
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("E:\\myWriter.xml");
//遍历
//获取根节点
XmlNode root = xmlDoc.DocumentElement;
Console.WriteLine("根节点 :" + root.Name);
Console.WriteLine("——————————————————————————---");
//获取根节点的下一级子节点lxrs
XmlNodeList lxrs = root.ChildNodes;
for (int i = 0; i < lxrs.Count; i++)
{
//根节点的子节点
XmlNode lxr = lxrs[i];
Console.WriteLine("第一级节点名 :" + lxr.Name);
//节点值
Console.WriteLine("第一级节点值 :" + lxr.InnerText);
Console.WriteLine("第一级节点 :" + lxr.OuterXml);
//判断是否包含子节点
if (lxrs[i].HasChildNodes)
{
//获取lxrs的子节点lxr
XmlNodeList lxrinfos = lxr.ChildNodes;
for (int j = 0; j < lxrinfos.Count; j++)
{
XmlNode lxrinfo = lxrinfos[j];
Console.WriteLine("\t第二级节点名 :" + lxrinfo.Name);
Console.WriteLine("\t第二级节点值 :" + lxrinfo.InnerText);
Console.WriteLine("\t第二级节点 :" + lxrinfo.OuterXml);
}
}
Console.WriteLine("——————————————————————————---");
}
//使用节点属性引用单个节点
Console.WriteLine("使用节点属性引用单个节点");
XmlNode mylxr;
//根节点的第一个子节点lxr
mylxr = root.FirstChild;
Console.WriteLine("根节点的第一个子节点lxr的属性 :" + mylxr.Attributes[0].Name + "--" + mylxr.Attributes[0].InnerText + "--" + mylxr.Attributes[0].InnerXml + "--" + mylxr.Attributes[0].OuterXml);
Console.WriteLine("根节点的第一个子节点lxr :"+mylxr.Name + "--" + mylxr.OuterXml);
//lxr的第一个子节点
mylxr = mylxr.FirstChild;
Console.WriteLine("lxr的第一个子节点 :" + mylxr.Name + "--" + mylxr.OuterXml);
//lxr的第一个子节点的下一个节点
mylxr = mylxr.NextSibling;
Console.WriteLine("lxr的第一个子节点的下一个节点 :" + mylxr.Name + "--" + mylxr.OuterXml);
//lxr的最后一个节点
//因为mylxr现在是lxr的子节点,先要通过mylxr.ParentNode找到父节点lxr,然后去的其最后一个节点
mylxr = mylxr.ParentNode.LastChild;
Console.WriteLine("lxr的最后一个节点 :" + mylxr.Name + "--" + mylxr.OuterXml);
}
}
}
这与用Javascript读取xml很相似……