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);