C# 当元素存在时,SelectSingleNode()返回null

C# 当元素存在时,SelectSingleNode()返回null,c#,.net,xml,xpath,C#,.net,Xml,Xpath,在以下代码中,SelectSingleNode返回null XmlDocument xmlresp = GetXMLWebRequest(URL, PayLoad, ""); XmlNodeList elemList = xmlresp.GetElementsByTagName("Document"); for (int i = 0; i < elemList.Count - 1; i++) { byte[] b = System.Convert.FromBase64String(e

在以下代码中,
SelectSingleNode
返回null

XmlDocument xmlresp = GetXMLWebRequest(URL, PayLoad, "");
XmlNodeList elemList = xmlresp.GetElementsByTagName("Document");
for (int i = 0; i < elemList.Count - 1; i++)
{
   byte[] b = System.Convert.FromBase64String(elemList.Item(i).SelectSingleNode("Page/Value").Value);
}

问题是
元素都位于
http://integration.fiapi.com
名称空间(它应用于
的所有子体),并且您尚未在
SelectSingleNode
查询中指定名称空间

您可以删除名称空间,或按如下方式修改查询:

XmlNamespaceManager mgr = new XmlNamespaceManager(xmlresp.NameTable);
mgr.AddNamespace("ns", "http://integration.fiapi.com");

for (int i = 0; i < elemList.Count; ++i)
{
    XmlNode node = elemList[i].SelectSingleNode("ns:Page/ns:Value", mgr);
    // ... convert node.Value as needed
}
XmlNamespaceManager mgr=新的XmlNamespaceManager(xmresp.NameTable);
管理器AddNamespace(“ns”http://integration.fiapi.com");
for(int i=0;i
试一试:

XmlNamespaceManager nsManager;

nsManager = new XmlNamespaceManager(doc.NameTable);

nsManager.AddNamespace("fi", "http://integration.fiapi.com");

elementList.Item(i).SelectSingleNode("fi:Page/fi:Value", nsManager);

我读这个问题已经很晚了,但给出了解决方案,所以它可能会帮助其他正在为selectedNodes或SelectedSingleNode的空值而挣扎的人

XmlDocument xmresp=GetXMLWebRequest(URL,有效负载,”)

xmresp.Load(新的xmlTextReader(新的StringReader(“文档”){namespace=false});

XmlNodeList elemList=xmresp.SelectSingleNode(“文档”)


请用粗体线条更新代码并重试。

您能提供实际的XML而不是字符串吗?我当然看不到任何页面/值路径显示为空的内容,这就是为什么您得到空值的原因。我正在尝试将XML粘贴到此处,我不知道发生了什么事?谢谢您的快速回复!我尝试了您的解决方案,现在node元素不是null而是elemList.Item(i)。选择singlenode(“ns:Page/ns:Value”,mgr)。Value此值返回为null。对于
XmlNode
xmlement
,需要使用
InnerText
字段返回其“值”“.Text实际上是DOM中的一个节点,这就是元素值未定义的原因:感谢Steve的快速帮助!
XmlNamespaceManager nsManager;

nsManager = new XmlNamespaceManager(doc.NameTable);

nsManager.AddNamespace("fi", "http://integration.fiapi.com");

elementList.Item(i).SelectSingleNode("fi:Page/fi:Value", nsManager);