zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
    Tomcat跨域
    Invalid bean definition with name 'dataSource' defined in class path resource [applicationContext.xml]
    网速测试
    程序员实用工具网站
    安装wls报(主清单位置 "/u01/app/oracle/inventory" 无效 (无法读取/写入/执行))
    pom.xml
    CUDA -- 内存分配
    最长上升子序列(LIS: Longest Increasing Subsequence)
    实例化渲染
  • 原文地址:https://www.cnblogs.com/wsl2011/p/2067336.html
Copyright © 2011-2022 走看看