C#中对XML的读取操作

来源:互联网 发布:java什么是异常 编辑:程序博客网 时间:2024/05/21 11:27

1.如何利用xmldocument加载xml文件。
 在.net中使用DOM
   .net中的文档对象模型(document object model)支持W3C DOM LEVEL 1和Core DOM LEVEL2规范,DOM是通过XMLNode类来实现的。XmlNode是一个抽象类,他表示文档中的一个节点。

使用XmlDocument对象。
    XmlDocument及其派生类XmlDataDocument是用于在.net中表示DOM的类,与XmlReader和XmlWriter不同,XmlDocument具有读写功能,并可以随机访问DOM树。
命名空间:System.Xml public class XmlDocument : XmlNode:表示 XML 文档。
备注:此类实现 W3C 文档对象模型 (DOM) 级别 1 核心 (Level 1 Core) 和核心 DOM 级别 2 (Core DOM Level 2)。DOM 是 XML 文档的内存中(缓存)树状表示形式,允许对该文档的导航和编辑。
构建器:
public XmlDocument():初始化XmlDocument类的新实例。
公共方法:
public virtual void Load ( Stream inStream ):从指定的流加载 XML 文档,参数inStream 包含要加载的 XML 文档的流。
public virtual void Load ( string filename ):从指定的 URL 加载 XML 文档,参数filename 文件的 URL,该文件包含要加载的 XML 文档。

xmldocument对xml文件中每个标签(节点),属性(属性attribute),文本(Text)
using System;
using System.IO;
using System.Xml;
public class Sample
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(@"c:/aa.xml");
        XmlNode node=doc.DocumentElement;//xml的根标签
        Console.WriteLine(node.Name);//返回标签的名字
        Console.WriteLine(node.InnerText);//返回标签下所有字标签包含的文本。
        Console.WriteLine(node.InnerXml);//返回所有字标签以及包含的文本。
    }
}

2、读取xml数据的方法。
范例:读取所有标签下的<name>标签中文本。
XmlNode:表示一个标签节点
XmlNodeList:表示一个节点的集合
public virtual XmlNodeList GetElementsByTagName ( string name ):返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表,参数name 要匹配的限定名。它针对匹配节点的 Name 属性进行匹配。特殊值“*”匹配所有标记,返回数据为:XmlNodeList,包含所有匹配节点的列表。
public abstract class XmlNodeList : IEnumerable:表示排序的节点集合。备注XmlNodeList 集合为“活动”的;也就是说,对其源节点对象的子级所做的更改会立即反映在由 XmlNodeList属性和方法返回的节点中。XmlNodeList 支持迭代和索引访问,此集合对象中包含的每个元素是XmlNode的派生类对象。
以下属性和方法返回 XmlNodeList:
XmlNode.ChildNodes - 返回包含节点所有子级的 XmlNodeList。
XmlNode.SelectNodes - 返回包含匹配 XPath 查询的节点集合的 XmlNodeList。
GetElementsByTagName - 返回包含与指定名称匹配的所有子代元素的列表的 XmlNodeList。该方法在 XmlDocument 和 XmlElement 类中都可以使用。
using System;
using System.IO;
using System.Xml;
public class Sample
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(@"c:/aa.xml");
        XmlNodeList list= doc.GetElementsByTagName("name");
        foreach (XmlNode node in list)
        {
            Console.WriteLine(node.Name + ":" + node.InnerText);
        }
        list = doc.GetElementsByTagName("price");
        foreach (XmlNode node in list)
        {
            Console.WriteLine(node.Name + ":" + node.InnerText);
        }
    }
}

public XmlNodeList SelectNodes ( string xpath ):选择匹配XPath 表达式的节点列表,参数xpath为XPath 表达式,返回值一个 XmlNodeList,包含匹配 XPath查询的节点集合。不应该要求将 XmlNodeList “实时”连接到 XML 文档。也就是说,XML 文档中的更改不会出现在XmlNodeList 中,反之亦然。
范例:
using System;
using System.IO;
using System.Xml;
public class Sample
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(@"c:/aa.xml");
        //XmlNodeList list= doc.GetElementsByTagName("name");
        XmlNodeList list = doc.SelectNodes("books/book/name");
        foreach (XmlNode node in list)
        {
            Console.WriteLine(node.Name + ":" + node.InnerText);
        }
    }
}
aa.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="D:/Project/ConsoleApplication1/ConsoleApplication1/bb.css"?>
<books>
  <book id="a1">
    <name>jsp</name>
    <price>6788</price>
    <num>michael</num>
  </book>
    <book id="a2">
    <name>asp.net</name>
    <price>444</price>
    <num>michael</num>
  </book>
</books>

原创粉丝点击