`
angie_hawk7
  • 浏览: 46723 次
  • 性别: Icon_minigender_1
  • 来自: 乌托邦
社区版块
存档分类
最新评论

Xml中SelectSingleNode方法中的xpath用法

XML 
阅读更多
view plaincopy to clipboardprint?

   1. 最常见的XML数据类型有:Element, Attribute,Comment, Text. 
   2.  
   3.    Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference. 
   4.  
   5.    Attribute, 指在<Employee >中的粗体部分。 
   6.  
   7.    Comment,指形如:<!-- my comment --> 的节点。 
   8.  
   9.    Text,指在<Name>Tom<Name>的粗体部分。 
  10.  
  11.   在XML中,可以用XmlNode对象来参照各种XML数据类型。 
  12.  
  13.    2.1 查询已知绝对路径的节点(集) 
  14.  
  15.    objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee”) 
  16.  
  17.   或者 
  18.  
  19.    objNodeobjNodeList = objNode.SelectNodes(“/Company/Department/Employees/Employee”) 
  20.  
  21.   以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如: 
  22.  
  23.    objNodeobjNode = objNode.SelectSingleNode(“/Company/Department/Employees/Employee”) 
  24.  
  25.    If Not (objNode is Nothing) then 
  26.  
  27.    ‘- Do process 
  28.  
  29.    End If 
  30.  
  31.    2.2 查询已知相对路径的节点(集) 
  32.  
  33.   可使用类似于文件路径的相对路径的方式来查询XML的数据 
  34.  
  35.    objNode = objDoc.SelectSingleNode(“Company/Department”) 
  36.  
  37.    objNodeobjNodeList = objNode.SelectNodes(“../Department) 
  38.  
  39.    objNodeobjNode = objNode.SelectNode(“Employees/Employee”) 
  40.  
  41.    2.3 查询已知元素名的节点(集) 
  42.  
  43.   在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如: 
  44.  
  45.    objNodeList = objDoc.SelectNodes(“Company//Employee”) 
  46.  
  47.    2.4 查询属性(attribute)节点 
  48.  
  49.   以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如: 
  50.  
  51.    objNodeList = objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”) 
  52.  
  53.    objNodeList = objDoc.SelectNodes(“Company//@id”) 
  54.  
  55.    2.5 查询Text节点 
  56.  
  57.   使用text()来获取Text节点。 
  58.  
  59.    objNode = objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”) 
  60.  
  61.    2.6 查询特定条件的节点 
  62.  
  63.   使用[]符号来查询特定条件的节点。例如: 
  64.  
  65.    a. 返回id号为 10102的Employee节点 
  66.  
  67.    objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”) 
  68.  
  69.    b. 返回Name为Zhang Qi的Name 节点 
  70.  
  71.    objNode = objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang Qi’]”) 
  72.  
  73.    c. 返回部门含有职员22345的部门名称节点 
  74.  
  75.    objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name") 
  76.  
  77.    2.7 查询多重模式的节点 
  78.  
  79.   使用 | 符号可以获得多重模式的节点。例如: 
  80.  
  81.    objNodeList = objDoc.SelectNodes(“Company/Department/Department_Name | Company/Department/Manager”) 
  82.  
  83.    2.8 查询任意子节点 
  84.  
  85.   使用*符号可以返回当前节点的所有子节点。 
  86.  
  87.    objNodeList = objDoc.SelectNodes(“Company/*/Manager) 
  88.  
  89.   或者 
  90.  
  91.    objNodeobjNodeList = objNode.ChildNodes 
  92.  
  93.    
  94.  
  95.    3 XML数据的编辑 
  96.  
  97.    3.1 增加一个元素的属性(attribute)节点 
  98.  
  99.    Dim objNodeAttr As XmlNode 
100.  
101.    objNodeAttr = objDoc.CreateAttribute("id", Nothing) 
102.  
103.    objNodeAttr.InnerXml = "101" 
104.  
105.    objNode.Attributes.Append(objNodeAttr) 
106.  
107.    3.2 删除一个元素的属性 
108.  
109.    objNode.Attributes.Remove(objNodeAttr) 
110.  
111.    3.3 增加一个子元素(Element) 
112.  
113.    Dim objNodeChild As XmlNode 
114.  
115.    objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing) 
116.  
117.    objNodeChild.InnerXml = "101" 
118.  
119.    objNode.AppendChild(objNodeChild) 
120.  
121.    3.4 删除一个子元素 
122.  
123.    objNode.RemoveChild(objNodeChild) 
124.  
125.    3.5 替换一个子元素 
126.  
127.    objNOde.ReplaceChild(newChild,oldChild) 
128.  
129.    
130.  
131.    4 参考数据 
132.  
133.    <?xml version="1.0" encoding="UTF-8"?> 
134.  
135.    <Company> 
136.  
137.    <Department > 
138.  
139.    <Department_Name>Cai WuBu</Department_Name> 
140.  
141.    <Manager>Zhang Bin</Manager> 
142.  
143.    <Employees> 
144.  
145.    <Employee > 
146.  
147.    <Employee_ID>12345</Employee_ID> 
148.  
149.    <Name>Zhang Bin</Name> 
150.  
151.    <Gender>male</Gender> 
152.  
153.    </Employee> 
154.  
155.    <Employee > 
156.  
157.    <Employee_ID>10101</Employee_ID> 
158.  
159.    <Name>Zhang QI</Name> 
160.  
161.    <Gender>female</Gender> 
162.  
163.    </Employee> 
164.  
165.    <Employee > 
166.  
167.    <Employee_ID>10102</Employee_ID> 
168.  
169.    <Name>Zhang Xia</Name> 
170.  
171.    <Gender>male</Gender> 
172.  
173.    </Employee> 
174.  
175.    <Employee > 
176.  
177.    <Employee_ID>10201</Employee_ID> 
178.  
179.    <Name>ZhangChuang</Name> 
180.  
181.    <Gender>male</Gender> 
182.  
183.    </Employee> 
184.  
185.    <Employee > 
186.  
187.    <Employee_ID>10202</Employee_ID> 
188.  
189.    <Name>Zhang Jun</Name> 
190.  
191.    <Gender>male</Gender> 
192.  
193.    </Employee> 
194.  
195.    </Employees> 
196.  
197.    </Department> 
198.  
199.    <Department > 
200.  
201.    <Department_Name>KaiFa Bu</Department_Name> 
202.  
203.    <Manager>Wang Bin</Manager> 
204.  
205.    <Employees> 
206.  
207.    <Employee > 
208.  
209.    <Employee_ID>22345</Employee_ID> 
210.  
211.    <Name>Wang Bin</Name> 
212.  
213.    <Gender>male</Gender> 
214.  
215.    </Employee> 
216.  
217.    <Employee > 
218.  
219.    <Employee_ID>20101</Employee_ID> 
220.  
221.    <Name>Wang QI</Name> 
222.  
223.    <Gender>female</Gender> 
224.  
225.    </Employee> 
226.  
227.    <Employee > 
228.  
229.    <Employee_ID>20102</Employee_ID> 
230.  
231.    <Name>Wang Xia</Name> 
232.  
233.    <Gender>male</Gender> 
234.  
235.    </Employee> 
236.  
237.    <Employee > 
238.  
239.    <Employee_ID>20201</Employee_ID> 
240.  
241.    <Name>Wang Chuang</Name> 
242.  
243.    <Gender>male</Gender> 
244.  
245.    </Employee> 
246.  
247.    <Employee > 
248.  
249.    <Employee_ID>20201</Employee_ID> 
250.  
251.    <Name>Wang Jun</Name> 
252.  
253.    <Gender>male</Gender> 
254.  
255.    </Employee> 
256.  
257.    </Employees> 
258.  
259.    </Department> 
260.  
261.    </Company> 
分享到:
评论

相关推荐

    C# 读取 带 xmlns 命名空间 XML 结点 SelectSingleNode 类 For .NET Framework 1.1x

    C# 读取 带 xmlns 命名空间 XML 结点 SelectSingleNode 类 For .NET Framework 1.1x AutoPrefix(System.Xml.XmlNode xNode, System.Xml.XmlNamespaceManager xNameSpaceManager) AutoXPath(System.Xml.XmlNode ...

    JDOM中XPath.selectNodes()和XPath.selectSingleNode()用法

    NULL 博文链接:https://newtime.iteye.com/blog/437338

    .net 操作xml的简单方法及说明

    代码如下:using System.Xml;...//指定一个节点XmlNode root=xml.SelectSingleNode(“/root”);//获取节点下所有直接子节点XmlNodeList childlist=root.ChildNodes;//判断该节点下是否有子节点root.HasChildNodes;/

    深入dom4j使用selectSingleNode方法报错分析

    本篇文章是对dom4j使用selectSingleNode方法报错进行了详细的分析介绍,需要的朋友参考下

    vb6XML读写

    vb中读写XML文件实例Dim XMLDoc As DOMDocument Dim root As IXMLDOMNode Dim xlst As IXMLDOMNodeList, xlst1 As IXMLDOMNodeList Dim xn As IXMLDOMNode Dim xnf As IXMLDOMNode Dim xe As IXMLDOMElement Set ...

    第31章 XPath1

    selectSingleNode()方法接受一个 XPath 模式(也就是查找路径),找到匹配的第一个节点并将它返回,没有则返回 null。//得到第一个 us

    day023-xml解析笔记和代码.rar

    dom4j中使用到的方法: 1.创建SaxReader对象 SAXReader reader = new SAXReader(); 2.设置命名空间 reader.getDocumentFactory().setXPathNamespaceURIs(map); 3. SAXReader对象调用...

    兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码

    selectSingleNode:根据XPath选择单个节点。 selectNodes:根据XPath选择多个节点。 全部代码(zyllibjs_xml.js)—— 代码如下: /* zyllibjs_xml XML处理 @author zyl910 注意—— 1. Chrome 由于其安全机制限制, ...

    JS中常用的xpath特性

    JS中常用的xpath特性 //选择所有dir元素的值等于xx的元素 Dom.documentElement.selectNodes("server/dir[text()='xx']") //选择server元素下的所有dir元素: Dom.documentElement.selectNodes("server/dir...

    asp.net中XML如何做增删改查操作

    一、简单介绍 using System.Xml; //初始化一个xml实例 ...XmlNode root=xml.SelectSingleNode(/root); //获取节点下所有直接子节点 XmlNodeList childlist=root.ChildNodes; //判断该节点下是否有子节点 root.H

    MSXML解析XML文档(源码).

    MSXML解析XML文档(源码).

    javascript操作XML

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") 'JAVASCRIPT中的创建对象 set objXml=CreateObject("Microsoft.XMLDOM") '创建解析器对象 objXml.async="false" objXml.load("test.xml") '装载xml文件 ...

    ASP对XML文档中文本的操作

    '程序简介: 完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看 '入口参数: 无 '出口参数: 无 '------------------------------------------------ '函数名字:ConnectXml() '入口参数: filename ...

    xml读写,vb2008

    vn.net 2008 的xml读写 'Dim xnl As XmlNode = xmldoc.SelectSingleNode("items/fnode") '读取单个节点 'Dim xe As XmlElement = CType(xnl, XmlElement) 'Trace.WriteLine(xnl("id").InnerText) 'Trace....

    c# xml API操作的小例子

    xmlNode = _xml.SelectSingleNode(loginUrl);loginInfo.LoginUrl = xmlNode.InnerText;xmlNode = _xml.SelectSingleNode(loginUser);loginInfo.UserId = xmlNode.Attributes[“tagId”].Value;loginInfo.UserValue =...

    C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页

    已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1、插入节点 往节点中插入一个节点: 代码如下:XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(“bookstore.xml”); XmlNode root=xmlDoc....

    C#读写xml文件Demo

    C#实现对xml文件的读取和写入操作 XmlNode xn = xmlDoc.SelectSingleNode("DBConnection"); XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; ...

    博客园和CSDN博客过滤器源码20121013

    a)item.SelectSingleNode("div[2]/h3/a").InnerText 通过HtmlAgilityPack+XPath读取html中数据 4、WebInfoModels.cs: 包含查询条件、博客显示项目等信息相关Model 5、本项目代码不多,其它代码在源码中均有注释

    详解C#对XML、JSON等格式的解析

    一、C#对XML格式数据的解析 1、用XMLDocument来解析 XmlDocument xmlDocument = new XmlDocument();...XmlNode node = xmlDocumentSelectSingleNode(content/section/page/gall/folder);//定位到folder节点 no

    asp读取xml文件

    代码如下:strSourceFile = Server.MapPath(dataxml&”/Advertisement/”&id&”/adv.xml”) Set ...Set xml=objXML.documentElement.selectSingleNode(“Advertisement”) ‘选取节点 Advertisement ADid=xm

Global site tag (gtag.js) - Google Analytics