各位老大,我在使用包含如下xml的XmlDocument对象的SelectNodes方法时,发现里面不统计别的node,包含了不通的NameSpace,导致结果不正确。
Xml内容:
<a  xmlns="http://www.mywebsite.com">
  <ab>Test Xml File</ab>
  <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Uniform Residential Loan Application</title>
    </head>
  </html>
</a>
xPath="/a/html/head/title"
使用方法:
XmlNode theNode=xmlDocument.SelectNodes(xPath);
结果返回null,而不是内容为title的节点。
请问,如何才能使用xpath从中读出title节点?
分不够,再加,加到大家满意,呵呵。

解决方案 »

  1.   

    http://msdn.microsoft.com/library/CHS/cpref/html/frlrfsystemxmlxmlnodeclassselectsinglenodetopic2.asp
      

  2.   

    XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
    nsmgr.AddNamespace("ab", "http://www.mywebsite.com");
    XmlNode theNode = doc.SelectSingleNode("//ab:title", nsmgr);
      

  3.   

    XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
    nsmgr.AddNamespace("ab", "http://www.w3.org/1999/xhtml");
    XmlNode theNode = doc.SelectSingleNode("//ab:title", nsmgr);
      

  4.   

    net_lover(孟子E章):
    非常感谢,现在已经解决了已知NameSpace,如何用XPath做select的问题。
    但是,通常情况下,我们并不知道一个XML文档中是否添加了namespace,并且有很多xhtml都是把namespace省略掉了。:(
    老大你是否有,不管namespace是什么,都可以直接通过xpath来取到node的方法吗?要求不能使用GetElementById()和GetElementsByTagName()的方法。
    同时我也就这个问题,新做了一个提问,请你到新提问处签个到,加分100。
    ;)