博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xml中SelectSingleNode方法中的xpath用法
阅读量:5861 次
发布时间:2019-06-19

本文共 3265 字,大约阅读时间需要 10 分钟。

ContractedBlock.gif
ExpandedBlockStart.gif
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)

转载于:https://www.cnblogs.com/wsl2011/archive/2011/06/01/2067336.html

你可能感兴趣的文章
BUG:3877515 – Logminer Returning No Records
查看>>
为fedora17安装有线网卡驱动
查看>>
华为Dorado全闪存阵列
查看>>
mybatis基础入门
查看>>
分析函数— —统计
查看>>
Oracle查询相关
查看>>
(J2EE学习笔记)hibernate的实体映射(双向一对一)
查看>>
CGI
查看>>
如何编写可维护的JavaScript代码?
查看>>
37条常用Linux Shell命令组合
查看>>
[电脑酒吧SEO知识入门篇]0.本系列文章概述
查看>>
xshell十大技巧
查看>>
做为技术人员为什么要写博客
查看>>
实验:不同网段DHCP(VM)
查看>>
使用U盘自制Linux操作系统
查看>>
js 获取域名和页面完整地址
查看>>
零成本搭建WDS轻量级系统批量部署环境视频课程
查看>>
JavaScript原型和闭包(极好的一篇帖子)
查看>>
使用rsync+inotify配置触发式(实时)远程同步
查看>>
详解DNS递归查询与迭代查询
查看>>