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)
  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/wsl2011/p/2067336.html
Copyright © 2011-2022 走看看