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)