XML文件如下:
  <?xml version="1.0" encoding="utf-8" ?> 
- <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <soap:Body>
- <VerificationUserLoginResponse xmlns="http://tempuri.org/">
  <VerificationUserLoginResult>false</VerificationUserLoginResult> 
  </VerificationUserLoginResponse>
  </soap:Body>
  </soap:Envelope>c#代码读取如下:
XmlDocument xmldoc = new XmlDocument();
XmlNode node1 = xmldoc.SelectSingleNode("/Envelope/Body/VerificationUserLoginResponse/VerificationUserLoginResult");
           为什么读取不到值呢?node1始终为null,谁帮忙修改一下,谢谢啊。

解决方案 »

  1.   

    是不是 要加上 命名空间xmlns
      

  2.   

    XmlDocument doc = new XmlDocument();
    doc .Load(Server.MapPath("~/1.xml"));
    XmlNamespaceManager m = new XmlNamespaceManager(doc .NameTable);
    m.AddNamespace("a", "");
    m.AddNamespace("xs", "x");
    m.AddNamespace("msdata", "urn:schemas-microsoft-com:xml-msdata");
    XmlNodeList ns = d.SelectNodes("",m);
    foreach (XmlNode n in ns)
    {
    }
      

  3.   


       XmlDocument xmldoc = new XmlDocument();
                    xmldoc.LoadXml(s);
                     XmlNamespaceManager nsp = new XmlNamespaceManager(xmldoc.NameTable);
                     nsp.AddNamespace("soap","http://www.w3.org/2003/05/soap-envelope");
                     XmlNode node1 = xmldoc.DocumentElement;//.SelectSingleNode("Envelope",nsp);
                     XmlNode node2 = node1.SelectSingleNode("child::soap:Body", nsp);
      

  4.   

     XmlDocument configDocument = new XmlDocument();
                    configDocument.Load(xmlPath);
                    if (configDocument != null)
                    {
                        XmlNode root = configDocument.SelectSingleNode("descendant::Root");
    ……这样
      

  5.   

    从这个文件看,标签的命名空间有两个,因此需要增加两个命名空间。
    XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(xmldoc.NameTable);
    xmlNamespaceManager.AddNamespace("soap", "http://www.w3.org/2003/05/soap-envelope");
    xmlNamespaceManager.AddNamespace("ns", "http://tempuri.org/");
    XmlNode node1 = xmldoc.SelectSingleNode("/soap:Envelope/soap:Body/ns:VerificationUserLoginResponse/ns:VerificationUserLoginResult", xmlNamespaceManager);
    也可以直接查找:
    XmlNode node1 = xmldoc.SelectSingleNode("//ns:VerificationUserLoginResult", xmlNamespaceManager);