我这里有一段遍历xml文件的代码,他能便利所有的节点和打印属性,也许有帮助
dim reader as ZXMLReader
dim i as integertry
  reader = new XMLTextReader(Server.MapPath("books.xml"))
  while reader.Read()
     Select Case reader.NodeType
       Case XmlNodeType.Element
       if reader.HasAttributes then
         for i = 0 to reader.AttributeCount - 1
           Response.Write(reader.GetAttributes(i) & "")
         next
           Response.Write("<br>")
     
       end if
       Case....
     end Select 
  end while
cath ex as Exception
  ......
finally
  ......
end try

解决方案 »

  1.   

    yes, try XPath and use "@" before the attribute name, for example"//book[@genre='novel2' and @publicationdate='1992']"
      

  2.   

    Lnyoureyes的方法只能够顺序的找节点打印属性,不能够根据所给的属性去查节点。
      思归的方法能够根据属性查找到节点:但是我希望根据属性找到这个节点之后,再把这个节点下的全部子结点的value(全是字符)给显示到页面上来。这个时候我就不知道该怎么办了?
      我现在采用的方法是用DOM的 SelectNodes方法找到节点,这时只要找到节点就很容易的把该节点的子节点的value打印出来。但我却不知道在SelectNodes中如何用属性去查节点。
      所以我现在只会用这两种方法中的一半。
      

  3.   

    void DisplayNode(XmlNode node)
    {
      if (node.HasChildNodes)
       foreach(XmlNode nn in node.ChildNodes)
             DisplayNode(nn);
      else
       Response.Write(node.InnerText);
    }foreach (XmlNode node in doc.SelectNodes("//book[@genre='novel2' and @publicationdate='1992']"))
    {
      DisplayNode(node);
    }