加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Xml中SelectSingleNode方法中的xpath用法

发布时间:2020-12-16 08:52:24 所属栏目:百科 来源:网络整理
导读:[xml] view plain copy 最常见的XML数据类型有:Element,Attribute,Comment,Text. Element,指形如 Name Tom 的节点。它可以包括:Element,Text,Comment,ProcessingInstruction,CDATA,andEntityReference. Attribute,指在 Employee 中的粗体部分。 Comment,
[xml] view plain copy
  1. 最常见的XML数据类型有:Element,Attribute,Comment,Text.
  2. Element,指形如<Name>Tom>的节点。它可以包括:Element,Text,Comment,ProcessingInstruction,CDATA,andEntityReference.
  3. Attribute,指在Employee>中的粗体部分。
  4. Comment,指形如:<!--mycomment-->的节点。
  5. Text,指在>的粗体部分。
  6. 在XML中,可以用XmlNode对象来参照各种XML数据类型。
  7. 2.1查询已知绝对路径的节点(集)
  8. objNodeList=objDoc.SelectNodes(“Company/Department/Employees/Employee”)
  9. 或者
  10. objNodeList=objNode.SelectNodes(“/Company/Department/Employees/Employee”)
  11. 以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回Nothing。例如:
  12. objNode=objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
  13. IfNot(objNodeisNothing)then
  14. ‘-Doprocess
  15. EndIf
  16. 2.2查询已知相对路径的节点(集)
  17. 可使用类似于文件路径的相对路径的方式来查询XML的数据
  18. objNode=objDoc.SelectSingleNode(“Company/Department”)
  19. objNodeList=objNode.SelectNodes(“../Department)
  20. objNode=objNode.SelectNode(“Employees/Employee”)
  21. 2.3查询已知元素名的节点(集)
  22. 在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
  23. objNodeList=objDoc.SelectNodes(“Company//Employee”)
  24. 2.4查询属性(attribute)节点
  25. 以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
  26. objNodeList=objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”)
  27. objNodeList=objDoc.SelectNodes(“Company//@id”)
  28. 2.5查询Text节点
  29. 使用text()来获取Text节点。
  30. objNode=objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)
  31. 2.6查询特定条件的节点
  32. 使用[]符号来查询特定条件的节点。例如:
  33. a.返回id号为10102的Employee节点
  34. objNode=objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)
  35. b.返回Name为ZhangQi的Name节点
  36. objNode=objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’ZhangQi’]”)
  37. c.返回部门含有职员22345的部门名称节点
  38. objNode=objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
  39. 2.7查询多重模式的节点
  40. 使用|符号可以获得多重模式的节点。例如:
  41. objNodeList=objDoc.SelectNodes(“Company/Department/Department_Name|Company/Department/Manager”)
  42. 2.8查询任意子节点
  43. 使用*符号可以返回当前节点的所有子节点。
  44. objNodeList=objDoc.SelectNodes(“Company/*/Manager)
  45. objNodeList=objNode.ChildNodes
  46. 3XML数据的编辑
  47. 3.1增加一个元素的属性(attribute)节点
  48. DimobjNodeAttrAsXmlNode
  49. objNodeAttr=objDoc.CreateAttribute("id",Nothing)
  50. objNodeAttr.InnerXml="101"
  51. objNode.Attributes.Append(objNodeAttr)
  52. 3.2删除一个元素的属性
  53. objNode.Attributes.Remove(objNodeAttr)
  54. 3.3增加一个子元素(Element)
  55. DimobjNodeChildAsXmlNode
  56. objNodeChild=objDoc.CreateElement(Nothing,"ID",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> objNodeChild.InnerXml="101"
  57. objNode.AppendChild(objNodeChild)
  58. 3.4删除一个子元素
  59. objNode.RemoveChild(objNodeChild)
  60. 3.5替换一个子元素
  61. objNOde.ReplaceChild(newChild,oldChild)
  62. 4参考数据
  63. <?xmlversion="1.0"encoding="UTF-8"?>
  64. Company>
  65. DepartmentDepartment_Name>CaiWuBu</Manager>ZhangBinEmployeesEmployee_ID>12345Gender>maleEmployee>10101>ZhangQI>female>10102>ZhangXia>10201>ZhangChuang>10202>ZhangJunDepartment>KaiFaBu>WangBin>22345>20101>WangQI>20102>WangXia>20201>WangChuang>WangJun>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读