查询XML文件中的数据

来源:互联网 发布:河北经济频道网络直播 编辑:程序博客网 时间:2024/06/01 10:46

转一篇论坛上的查询XML的文章:

 

 2   XML   数据的查询    
      最常见的XML数据类型有:Element,   Attribute,Comment,   Text.    
      Element,   指形如<Name>Tom<Name>的节点。它可以包括:Element,   Text,   Comment,   ProcessingInstruction,   CDATA,   and   EntityReference.    
      Attribute,   指在<Employee   id=”12345”>中的粗体部分。    
      Comment,指形如:<!--   my   comment   -->   的节点。    
      Text,指在<Name>Tom<Name>的粗体部分。    
      在XML中,可以用XmlNode对象来参照各种XML数据类型。    
      2.1   查询已知绝对路径的节点(集)    
      objNodeList   =   objDoc.SelectNodes(“Company/Department/Employees/Employee”)    
      或者    
      objNodeList   =   objNode.SelectNodes(“/Company/Department/Employees/Employee”)    
      以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回   Nothing。例如:    
      objNode   =   objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)    
      If   Not   (objNode   is   Nothing)   then    
        ‘-   Do   process    
      End   If    
      2.2   查询已知相对路径的节点(集)    
      可使用类似于文件路径的相对路径的方式来查询XML的数据    
      objNode   =   objDoc.SelectSingleNode(“Company/Department”)    
      objNodeList   =   objNode.SelectNodes(“../Department)    
      objNode   =   objNode.SelectNode(“Employees/Employee”)    
      2.3   查询已知元素名的节点(集)    
      在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:    
      objNodeList   =   objDoc.SelectNodes(“Company//Employee”)    
      2.4   查询属性(attribute)节点    
      以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:  
  objNodeList   =   objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”)    
      objNodeList   =   objDoc.SelectNodes(“Company//@id”)    
      2.5   查询Text节点    
      使用text()来获取Text节点。    
      objNode=   bjDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)    
      2.6   查询特定条件的节点    
      使用[]符号来查询特定条件的节点。例如:    
      a.   返回id号为   10102的Employee节点    
        objNode   =   objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)    

        这里注意,以属性Attributes作为条件查询节点,都如上面的写法。
      b.   返回Name为Zhang   Qi的Name   节点    
        objNode   =   objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’Zhang   Qi’]”)         查找形如<Name>Zhang Qi</Name>的节点,都如上写法。
      c.   返回部门含有职员22345的部门名称节点    
      objNode   =   objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")    
      2.7   查询多重模式的节点    
      使用   |   符号可以获得多重模式的节点。例如:    
      objNodeList   =   objDoc.SelectNodes(“Company/Department/Department_Name   |   Company/Department/Manager”)    
      2.8   查询任意子节点    
      使用*符号可以返回当前节点的所有子节点。    
      objNodeList   =   objDoc.SelectNodes(“Company/*/Manager)    
      或者    
      objNodeList   =   objNode.ChildNodes