2016-10-04 65 views
0

我有一个XML文档,它看起来像:如何选择具有不同XML名称空间的XML节点?

<stReq xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <EvalRes> 
    <RenDtSrc xmlns="http://fakeurl.com/somthing/facade/params"> 
      <ContentType>application/pdf</ContentType> 
      <DocumentName>Name</DocumentName> 
      <Content>Doc Content</Content> 
    </RenDtSrc> 
    </EvalRes> 
</stReq> 

从asp.net应用程序,我想检查一个节点<RenDtSrc>存在于文件或没有。以下是我使用读取XML文件和节点元素

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("D:\\Test\\Doc1.xml"); 
XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("/stReq/EvalRes/RenDtSrc"); 

nodeList返回计数为零,即使里面有它的子节点的代码。 我认为它与名称空间管理器有关,但我无法弄清楚。任何帮助,将不胜感激。

回答

1
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("D:\\Test\\Doc1.xml"); 
var nsm = new XmlNamespaceManager(xmlDoc.NameTable); 
nsm.AddNamespace("s", "http://fakeurl.com/somthing/facade/params"); 
XmlNodeList nodeList = xmlDoc.SelectNodes("//s:RenDtSrc", nsm); 
+0

请勿发布原始代码避免并给予一定的解释,为什么这个工程。 – Adriaan

0
XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("//stReq/EvalRes/node()/*"); 

输出:

Node [0] = {Element, Name="ContentType"} 
Node [1] = {Element, Name="DocumentName"} 
Node [2] = {Element, Name="Content"} 
相关问题