`

xml的操作

    博客分类:
  • C#
 
阅读更多

例子:<FAQ>

<Destination DestName="订单" >

       <Answer DestName="订单" Style="修改订单">
                  <Question>修改订单的方法</Question>
                 <Question>如何修改订单</Question>
                 <Question>怎么修改订单</Question>
                 <Question>修改订单如何操作</Question>
                <Question>要怎么改订单</Question>
                <Question>修改订单</Question>
              </Answer>

<Destination>

</FAQ>

 

1、对Xml的节点进行简单查询的时候,常用的可以使用如下方法:
(1) XmlNode node = doc.selectSingleNode("//AllNode/Node[@ID = ’aaa’]");
在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的ID属性值为aaa
(2)XmlNode node = doc.selectSingleNode("//AllNode /*[@ID = ’aaa’]");
在整个Xml中查找AllNode节点下的节点,该子节点的ID属性值为aaa
(3) XmlNode node = doc.selectSingleNode("//AllNode/Node[@ID = ’aaa’ and @Name = ‘bbb’]");
在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的ID属性值为aaa,且Name属性为bbb
(4) XmlNode node = doc.selectSingleNode("//AllNode[Node = ’aaa’]");
在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的内容为aaa
(5) XmlNode node = doc.selectSingleNode("//AllNode/Node[@ID = ’aaa’]/ChildNode[@ID=’bbb’]");
在整个Xml中查找AllNode节点下Node节点的子节点ChildNode,且Node节点的ID值为aaa,ChildNode节点的ID值为bbb

最常见的XML数据类型有:Element, Attribute,Comment, Text.
   Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
   Attribute, 指在<Employee id=”12345”>中的粗体部分。
   Comment,指形如:<!-- my comment --> 的节点。
   Text,指在<Name>Tom<Name>的粗体部分。
   在XML中,可以用XmlNode对象来参照各种XML数据类型。
   2.1 查询已知绝对路径的节点(集)
   objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”)
   或者
   objNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”)
   以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如:
   objNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
   If Not (objNode is Nothing) then
   ‘- Do process
   End If
   2.2 查询已知相对路径的节点(集)
   可使用类似于文件路径的相对路径的方式来查询XML的数据
   objNode = objDoc.SelectSingleNode(“Company/Department”)
   objNodeList = objNode.SelectNodes(“../Department)
   objNode = objNode.SelectNode(“Employees/Employee”)
   2.3 查询已知元素名的节点(集)
   在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
   objNodeList = objDoc.SelectNodes(“Company//Employee”)
   2.4 查询属性(attribute)节点
   以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
   objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee/@id ”)
   objNodeList = objDoc.SelectNodes(“Company//@id ”)
   2.5 查询Text节点
   使用text()来获取Text节点。
   objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)
   2.6 查询特定条件的节点
   使用[]符号来查询特定条件的节点。例如:
   a. 返回id号为 10102的Employee节点
   objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)
   b. 返回Name为Zhang Qi的Name 节点
   objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”)
   c. 返回部门含有职员22345的部门名称节点
   objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
   2.7 查询多重模式的节点
   使用 | 符号可以获得多重模式的节点。例如:
   objNodeList = objDoc.SelectNodes(“Company/Department/Department_Name | Company/Department/Manager”)
   2.8 查询任意子节点
   使用*符号可以返回当前节点的所有子节点。
   objNodeList = objDoc.SelectNodes(“Company/*/Manager)
   或者
   objNodeList = objNode.ChildNode

举个小例子:

     XmlNode node = dom.SelectSingleNode("//Destination /Answer[@DestName = '订单' and @Style = '修改订单']");

   XmlNode node1 = dom.SelectSingleNode("//Destination[@DestName = '订单' ]");

 

2、对XML进行删除节点操作

//删除当前节点及其所有子节点

node.ParentNode.RemoveChild(node);

//去掉当前节点下所有子节点

XmlNodeList aa = node.ChildNodes;
               while (aa.Count>0)
           {
             node.RemoveChild(aa[aa.Count-1]);
           }

//删除此节点的所有字节点的内容

 node.removeAll();

 

3、添加子节点

  XmlDocument dom = new XmlDocument();
         dom.Load(detnationPath);

   XmlNode root = dom.FirstChild;

      //创建一个节点
            XmlElement xe1 = dom.CreateElement("Destination");
            //设置该节点genre属性
            xe1.SetAttribute("DestName", "xiaxiao");
            XmlElement xesub1 = dom.CreateElement("Answer");
            xesub1.SetAttribute("DestName", "xiaxiao");
            xesub1.SetAttribute("style", "mimi");

            for (int i = 0; i < 5; i++)
            {
                XmlElement xesub2 = dom.CreateElement("question");
                xesub2.InnerText = ("woshi");
                xesub1.AppendChild(xesub2);
            }
            node.AppendChild(xesub1);

 

最后别忘记还有dom.save(FilePath);

 

 

分享到:
评论

相关推荐

    xml操作xml操作xml操作xml操作xml操作

    这里提到的"xml操作xml操作xml操作xml操作xml操作"显然是指对XML文档进行读取、修改和创建的操作。 在给定的示例中,首先加载XML文档到`XmlDocument`对象,这是.NET框架中用于处理XML的标准类。通过`XmlDocument`的...

    基于tinyxml2的xml操作库再封装

    总结来说,"基于tinyxml2的xml操作库再封装"项目为C++开发者提供了一个高效、易用的XML处理工具,通过优化和扩展tinyxml2的功能,使得XML数据的处理变得更加直观和便捷。这将极大地提高开发效率,降低开发成本,尤其...

    基于QT封装的XML操作,显示类

    **基于QT封装的XML操作与显示类** 在软件开发中,XML(eXtensible Markup Language)作为一种数据交换和存储格式,广泛应用于不同系统间的数据交互。QT作为一个跨平台的C++图形用户界面应用程序框架,提供了对XML的...

    c#xml操作类

    本篇文章将深入探讨如何在C#中进行XML操作,主要基于提供的"XML操作类"的压缩包文件。 首先,XML操作类通常包含了读取、写入、解析和修改XML文档的一系列方法。在C#中,我们可以利用System.Xml命名空间下的类来实现...

    xml操作,内含源码

    以下是一些关于XML操作的关键知识点: 1. **XML基本结构**: - XML文档由元素(Element)组成,元素是XML的最基本单位,可以包含其他元素或文本。 - 元素以尖括号 `和 `&gt;` 包裹,如 `&lt;element&gt;`,并用 `/` 表示...

    java对xml操作的项目案例

    本项目案例“java对xml操作的项目案例”深入探讨了如何使用Java来读取、修改和写入XML文件。下面将详细阐述相关知识点。 一、Java与XML的交互 1. DOM解析器:Document Object Model (DOM) 是一种将整个XML文档加载...

    动态生成Rss文件 Xml操作 Xml文件的修改

    动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...

    asp.net操作xml 操作大全

    在提供的源码文件“Asp[1].net+操作XML+源码.rar”中,可能包含了具体的ASP.NET XML操作示例,包括如何创建XML文件、读取XML文件、更新XML节点以及删除XML节点的代码片段。而“WebSite2”可能是包含一个完整的Web...

    c++的xml操作类

    tinyxml,很好用的xml操作类,c++版,删除了乱七八糟的工程文件,用时include一下两个头文件即可。具体使用方法参考:http://blog.csdn.net/zhangrentian/archive/2010/01/15/5194875.aspx

    XML操作类(完整)

    XML操作类(完整)使用于C#领域,更好的操作XML文件

    c# 下xml操作类

    c#下操作xml文件类,方便调用操作。 xml操作日趋常见,xml格式相对规范,通过xml存储信息更加方法,采用该类可以方便操作。

    C# XML操作类库(加强版)

    最近做项目,要用C#写,而且数据格式是那种节点套节点能把人套死的XML,看着都觉得晕,而且节点跳跃性很大,真心觉得单纯用环境自带的XMLDocument类完全达不到自己的需要,因为XML里面涉及到节点循环,循环里面又套...

    Xml操作类(C#)

    Xml操作类,项目中使用的,包含读取数据、插入数据、修改数据、删除数据 附带使用方法。

    xml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百味www.bywei.cn

    xml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百味www.bywei.cnxml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百味www.bywei.cnxml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百...

    xml操作类,xml操作类

    xml的所有操作.xml的所有操作.xml的所有操作.xml的所有操作.

    XML操作类XML操作类XML操作类

    XML操作类XML操作类XML操作类XML操作类XML操作类XML操作类XML操作类XML操作类

    xml操作C#源码

    该代码主要实现了根据xml中定义的扩展字段Expand动态生成textbox,填写后更新xml的一个源码,包括xml的增删改查功能。算是比较全的一个xml操作源码了。主要是为了公司项目做的可行性研究,欢迎交流分享。

    asp.net 用xml操作word asp.net 用xml操作word

    asp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用...

    C#winform xml操作详解

    2. **C#中的XML操作库**:在C#中,我们主要使用System.Xml命名空间中的类来处理XML。主要包括XmlDocument、XmlNode、XmlElement等。XmlDocument是整个XML文档的容器,XmlNode是所有XML节点的基类,XmlElement表示...

    XML 操作及 源码

    以上就是关于XML操作的基本介绍,通过C#的`XmlDocument`、`XmlWriter`、`XmlNode`以及`DataSet`等类,我们可以方便地实现XML的读取、写入、更新和删除。理解这些概念和用法,将有助于在实际开发中更好地处理和利用...

Global site tag (gtag.js) - Google Analytics