Xml中SelectSingleNode方法中的xpath用法

01.最常见的XML数据类型有:Element, Attribute,Comment, Text.
02.
03. Element, 指形如<Name>Tom<Name>的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
04.
05. Attribute, 指在<Employee >中的粗体部分。
06.
07. Comment,指形如:<!-- my comment --> 的节点。
08.
09. 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>

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wf520pb/archive/2008/07/12/2644549.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值