这是我将要读取的XML文档
<users xmlns="UserXmlSchema.xsd">
  <user id="hl23">
    <UserName>hl23</UserName>
    <UserPassword>ad8982jk</UserPassword>
    <UserNickname>wuyan</UserNickname>
    <UserCellphone>15021324373</UserCellphone>
    <UserEmail>[email protected]</UserEmail>
    <UserCreatedDAte></UserCreatedDAte>
  </user>
</users>
读取代码是
            string selectStr = "//user[@id='h23']";
            //selectStr = "//*";//用这个肯定可以查到所有的
            XPathNodeIterator iterator=this.xPathNav.Select(selectStr);//xPathNav为XPathNavigator实例
            foreach(object obj in iterator)
            {
                string str=obj.ToString();
            }
这段代码哪里有问题为什么总是读不出

解决方案 »

  1.   

    string selectStr = "//user[@id='h23']"; 
    写错了吧“[@'h23']”
      

  2.   

      string selectStr = "//*user[@id='h23']"; 
      

  3.   


    我试过了 这个貌似连语法都无法通过 
    //user本身就表示选取所有user节点,而不管该节点在文档中的位置
      

  4.   

    现在发现即使 string selectStr="/users/user"貌似也不行
    试到现在只有"//*"可以的 
      

  5.   

    必须用xpath?
    单独找节点不行么?XmlNode xNode = xDoc.SelectSingleNode("users/user");string selectStr = xNode.Attributes["id"].Value; ;
      

  6.   

    呵呵 我是为了练习 才弄的 如果绕个弯的话当然可以  但以后总要用到select的,所以还是现在搞明白比较好 ^.^
    貌似发现点缘由 貌似我把<users xmlns="UserXMLSchema.xsd">中的xmlns="UserXMLSchema.xsd"去掉就行了 不知道什么道理  谁能告诉我下  要不不能用验证也不是个办法吧
      

  7.   

    string selectStr = "//*user[@id='h23']";
    貌似不要*号的