Xml中SelectSingleNode方法中的xpath用法

View Code
   
     
1 Element, 指形如 < Name > Tom < Name > 的节点。它可以包括:Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.
2
3 Attribute, 指在 < Employee > 中的粗体部分。
4
5 Comment,指形如: <!-- my comment --> 的节点。
6
7 Text,指在 < Name > Tom < Name > 的粗体部分。
8
9 在XML中,可以用XmlNode对象来参照各种XML数据类型。
10
11
12
13 2.1 查询已知绝对路径的节点(集)
14
15 objNodeList = objDoc.SelectNodes(“Company / Department / Employees / Employee”)
16
17 或者
18
19 objNodeList = objNode.SelectNodes(“ / Company / Department / Employees / Employee”)
20
21
22
23 以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如:
24
25
26
27 objNode = objNode.SelectSingleNode(“ / Company / Department / Employees / Employee”)
28
29 If Not (objNode is Nothing) then
30
31 - Do process
32
33 End If
34
35
36
37 2.2 查询已知相对路径的节点(集)
38
39
40
41 可使用类似于文件路径的相对路径的方式来查询XML的数据
42
43 objNode = objDoc.SelectSingleNode(“Company / Department”)
44
45 objNodeList = objNode.SelectNodes(“.. / Department)
46
47 objNode = objNode.SelectNode(“Employees / Employee”)
48
49
50
51 2.3 查询已知元素名的节点(集)
52
53
54
55 在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用 // 符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
56
57 objNodeList = objDoc.SelectNodes(“Company // Employee”)
58
59
60
61 2.4 查询属性(attribute)节点
62
63
64
65 以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
66
67 objNodeList = objDoc.SelectNodes(“Company / Department / Employees / Employee / @id”)
68
69 objNodeList = objDoc.SelectNodes(“Company // @id”)
70
71
72
73 2.5 查询Text节点
74
75
76
77 使用text()来获取Text节点。
78
79 objNode = objDoc.SelectSingleNode(“Company / Department / Deparmt_Name / text()”)
80
81
82
83 2.6 查询特定条件的节点
84
85
86
87 使用[]符号来查询特定条件的节点。例如:
88
89
90
91 a. 返回id号为 10102的Employee节点
92
93 objNode = objDoc.SelectSingleNode(“Company / Department / Employees / Employee[@id = 10102 ’]”)
94
95
96
97 b. 返回Name为Zhang Qi的Name 节点
98
99 objNode = objDoc.SelectSingleNode(“Company / Department / Employees / Employee / Name[text() = ’Zhang Qi’]”)
100
101
102
103 c. 返回部门含有职员22345的部门名称节点
104
105 objNode = objDoc.SelectSingleNode( " Company/Department[Employees/Employee/@id='22345']/Department_Name " )
106
107
108
109 2.7 查询多重模式的节点
110
111
112
113 使用 | 符号可以获得多重模式的节点。例如:
114
115 objNodeList = objDoc.SelectNodes(“Company / Department / Department_Name | Company / Department / Manager”)
116
117
118
119 2.8 查询任意子节点
120
121
122
123 使用 * 符号可以返回当前节点的所有子节点。
124
125 objNodeList = objDoc.SelectNodes(“Company /* /Manager)
126
127 或者
128
129 objNodeList = objNode.ChildNodes
130
131
132
133 3 XML数据的编辑
134
135
136
137 3.1 增加一个元素的属性(attribute)节点
138
139 Dim objNodeAttr As XmlNode
140
141 objNodeAttr = objDoc.CreateAttribute("id", Nothing)
142
143 objNodeAttr.InnerXml = "101"
144
145 objNode.Attributes.Append(objNodeAttr)
146
147
148
149 3.2 删除一个元素的属性
150
151 objNode.Attributes.Remove(objNodeAttr)
152
153
154
155 3.3 增加一个子元素(Element)
156
157 Dim objNodeChild As XmlNode
158
159 objNodeChild = objDoc.CreateElement(Nothing, "ID", Nothing)
160
161 objNodeChild.InnerXml = "101"
162
163 objNode.AppendChild(objNodeChild)
164
165
166
167 3.4 删除一个子元素
168
169 objNode.RemoveChild(objNodeChild)
170
171
172
173 3.5 替换一个子元素
174
175 objNOde.ReplaceChild(newChild,oldChild)

你可能感兴趣的:(select)