`
angie_hawk7
  • 浏览: 48144 次
  • 性别: 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> 
分享到:
评论

相关推荐

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

    本文将深入探讨JDOM库中XPath的相关方法——`selectNodes()`和`selectSingleNode()`,以及它们的用法。 首先,我们来理解JDOM的基本概念。JDOM是Java Document Object Model的缩写,它提供了一种基于Java的API来...

    js中使用xpath来解析xml元素实用.pdf

    在IE浏览器中,我们可以直接使用`selectNodes()`和`selectSingleNode()`方法来选取XML文档中的多个节点或单个节点。如在示例代码中所示,`selectNodes("/resume/name")`会返回一个包含所有匹配的`&lt;name&gt;`元素的数组...

    js中使用xpath来解析xml元素.docx

    ### 使用JavaScript与XPath解析XML元素 #### XPATH简介 XPath是一种在XML文档中查找信息的语言。它使用路径表达式来选择节点或集合节点,并且能够处理来自XML文档的数据,为构建XSLT这样的XML应用程序提供了强有力...

    dom4j中XPath用法

    **DOM4J中XPath用法详解** XPath,全称为XML Path Language,是一...通过学习和实践,你可以熟练掌握DOM4J中的XPath用法,从而更高效地处理XML数据。提供的示例文件"a.xml"和"books.xml"可用于实际操作,以加深理解。

    XMLDOM对象方法手册.chm+XPath.chm

    通过XPath,我们可以精确定位到XML文档中的特定部分,然后使用XMLDOM的方法进行修改或操作。例如,可以先用XPath选取需要的元素,再调用`innerHTML`或`innerText`属性改变其内容,或者用`setAttribute`更改属性值。 ...

    Dom4j结合XPath解析XML文件路径表达式

    在Dom4j中,我们可以使用`org.dom4j.XPath`类来创建XPath对象,并通过`selectNodes()`或`selectSingleNode()`方法来执行路径表达式,获取XML文档中的节点集合或单个节点。以下是一个简单的示例: ```java import ...

    XMLDOM对象方法手册

    - `selectSingleNode`: 使用XPath表达式选择单个节点。 - `transformNode`: 应用XSLT转换到XML文档。 - `validateOnParse`: 设置是否在加载XML时进行验证。 - `resolveExternals`: 设置是否在加载XML时解析外部...

    IE下获取XPATH小工具源码_xpath_

    C#中,可以利用`XmlNode.SelectSingleNode()`方法找到指定的XPath路径,或者`XmlNode.SelectNodes()`方法获取所有匹配的节点。 3. **XPath表达式构建**:在获取到用户选择的元素后,小工具需要根据DOM结构自动生成...

    Dom4j 解析Xml文档及 XPath查询 学习笔记

    2. **执行查询**:调用`selectNodes()`或`selectSingleNode()`方法,传入`Document`或`Element`对象,执行XPath表达式并返回结果集。 ```java List&lt;Node&gt; nodes = xpath.selectNodes(document); for (Node node : ...

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

    `selectSingleNode`是DOM4J中用于选取XML文档中匹配特定XPath表达式的节点的方法。 首先,让我们看看提供的代码片段: ```java List&lt;Element&gt; featureMembers = root.selectNodes("featureMember"); ``` 这段代码...

    XML___Xpath

    在C#中使用XPath,通常会结合.NET框架中的System.Xml命名空间,例如使用`XmlDocument`或`XDocument`类来加载XML文档,然后调用`SelectNodes`或`SelectSingleNode`方法,传入XPath表达式来获取所需节点。下面将详细...

    C#操作XML的基本方法

    使用XmlDocument类的Load方法可以加载XML文件到内存中。例如: ```csharp XmlDocument doc = new XmlDocument(); doc.Load("path_to_xml_file.xml"); ``` 2. **解析XML结构**: 加载XML文件后,可以通过...

    。net中Xml的使用方法(源代码)

    - 使用内存有效的方法:处理大型XML文件时,考虑使用流式API,如`XmlReader`和`XmlWriter`,以减少内存占用。 通过以上知识,您可以有效地在.NET中进行XML文件的读写操作,同时理解了基本的XML处理和操作机制。在...

    Csharp读写XML文件

    C#中的XmlNode.SelectNodes或XmlNode.SelectSingleNode方法可以使用XPath表达式来查找元素。 ```csharp XmlNode foundNode = doc.SelectSingleNode("//element[@attribute='value']"); ``` ### 使用LINQ to XML: ...

    第31章 XPath1

    在非IE浏览器中,通常使用`document.evaluate()`方法来执行XPath查询,这在W3C DOM Level 3中被定义。因此,为了确保代码的广泛兼容性,开发者可能需要使用不同的方法来处理不同浏览器环境中的XPath操作。

    aspnet C# xml常用操作方法

    - `XmlNode.SelectNodes` 和 `XmlNode.SelectSingleNode`:使用XPath表达式选择节点。 - LINQ to XML:使用`Descendants`, `Elements`, `Attribute`等方法进行查询。 4. **XML序列化和反序列化** - `...

    QTP操作xml文件方法

    在MSXML库中,我们可以使用`selectNodes`和`selectSingleNode`方法来执行XPath查询: ```vbscript Dim xmlNode Set xmlNode = xmlDOM.SelectSingleNode("//root/element") '选取元素路径 WScript.Echo xmlNode.Text...

    dom4j 和xpath

    DOM4J和XPath是XML处理领域中的两个重要概念,它们在Java编程中有着广泛的应用。DOM4J是一款灵活且功能强大的...在Java项目中,使用DOM4J配合XPath可以极大地提高开发效率和代码的可读性,尤其在处理复杂XML文档时。

Global site tag (gtag.js) - Google Analytics