XmlDocument类

管理XML文档的类:XmlDocument类
XmlDocument类描述XML文档对象的类。如前所述,DOM将一切XML对象抽象为节点,因此XmlDocument继承于XmlNode类。该类具有XmlNode类的所有特征,并包含了一些针对XML文档设计的特点。

XmlDocument类作为描述XML文档对象的类,在进行实例化时,可以由XmlReader打开一个现有的XML文档,也可以根据自身的构造函数创建一个XML文档对象。当XmlDocument对象被创建或赋值时,将在内存中生成一个描述XML文档的类,可以在这个对象范围内,对指定的XML文档执行导航和写入的操作。

由于XmlDocument类提供了快捷的导航方式,因此不需要在程序中遍历其节点。尽管由于实现DOM的关系,XmlDocument本身也提供了遍历的方法,然而这不是W3C所推荐的。也就是说,相对于XmlDocument本身提供的导航方法而言,遍历节点的方法效率不高。
 

语法定义:

public class XmlDocument: XmlNode

下面的代码演示了使用不同的方法建立XmlDocument的实例:

//使用默认的构造函数构造一个XML文档类实例

System.Xml.XmlDocument myXmlDocument = new System.Xml.XmlDocument();

//使用XmlNameTable创建一个具有原子化字符串的XML文档实例

Sytem.Xml.XmlNameTable myNameTable = new System.Xml.NameTable();

System.Xml.XmlDocument myXmlDocument = new System.Xml.XmlDocument(myNameTable);

 

方法详解:

AppendChild
 将指定的节点添加到该节点的子节点列表的末尾

CreateCDataSection:创建CData节点

CreateComment:创建注释节点

CreateDocumentFragment : 创建Xml文档片断

CreateDocumentType : 创建新的XML文档类型 


CreateElement
 创建一个XML元素
 
CreateNode:创建一个节点

CreateTextNode :创建文本节点

GetElementById : 获得指定ID的Element
 
GetElementsByTagName
 返回一个XmlNodeList,它包含与指定名称匹配的所有子代元素的列表
 
GetEnumerator
 提供对XmlNode中节点上For Each样式迭代的支持
 
InsertAfter
 将指定的节点紧接着插入指定的引用节点之后
 
InsertBefore
 将指定的节点紧接着插入指定的引用节点之前
 
RemoveChild
 删除某个子节点
 
Save
 将Dom对象保存为XML文件
 
Load
 装载指定的XML文档


LoadXml

 直从指定的字符串加载 XML 文档。

 

 

应用:XML文件之间的数据交换

XmlDocument类提供了对XML文档的多方面操作,从而能够在两个XML文档之间,根据需要进行灵活多样的数据交换。因为每个XML的DOM标准对象都继承于抽象的XmlNode类,所以不同类型的节点之间的数据交换也很方便。

本例的目的是演示如何抽取一个XML文档中所包含的有效数据,并将这些数据赋予另一个XML文档。实例的演示步骤如下。

1、编写一个“Book.xml”文件。内容如下:

<?xml version="1.0"?>
<store>
  <book id = "1" genre="novel" publicationdate="1997" ISBN="1-861001-57-5">
    <title>Pride And Prejudice</title>
    <price>24.95</price>
  </book>
  <book id = "2" genre="business" publicationdate="2003" ISBN="4-746623-03-2">
    <title>Custumor Manger</title>
    <price>31.46</price>
  </book>
</store>

2、编写一个XML文件,默认名“NewBook.xml”。内容如下:

<store>
  <book id="1">
    <ISBN>1-861001-57-5</ISBN>
    <title>Pride And Prejudice</title>
    <price></price>
    <year>1996</year>
  </book>
  <book id="2">
    <ISBN>4-746623-03-2</ISBN>
    <title>Pride And Prejudice</title>
    <price></price>
    <year>2003</year>
  </book>
</store>


3、新建一个windows控制台程序,命名为“ConverBook”。

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace ConverBook
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument docbook = new XmlDocument();
            XmlDocument docnewbook = new XmlDocument();
            docbook.Load(@"C:\Book.xml");//加载源XML数据文件
            docnewbook.Load(@"C:\NewBook.xml");//加载目标XML数据文件
            XmlNode root = docbook.DocumentElement;
            XmlNode rootnew = docnewbook.DocumentElement;
            //将Book.xml的节点导入NewBook.xml
            for (int i = 0; i < root.ChildNodes.Count; i++)
            {
                String id = root.ChildNodes[i].Attributes["id"].Value; //从子节点列表中获取数据
                String price = root.ChildNodes[i].ChildNodes[1].InnerText;
                //使用xpath选取节点并赋值
                rootnew.SelectSingleNode("/store/book[@id=" + id + "]/price").InnerText = price;
            }
            docnewbook.Save(@"C:\NewBook.xml");//保存更改后的XML文档数据
            Console.WriteLine("数据导入完成,请按任意键继续……");
            Console.ReadLine();
        }

    }
}


5、按F5运行程序,重新使用文本编辑器打开NewBook.xml文件,可以看见文件内容已经改变,其中price节点已经被重新赋值了,如下所示:


 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值