XML
这是我需要管理的更复杂的简化版本C#
。
问题是当我尝试访问命名空间中的标签时,XPATH
它不起作用。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<s:Body xmlns:s=\"sssssss\"><s:SessionID>abcde</s:SessionID></s:Body>");
string xpath = "//*[local-name()='s:SessionID']";
Context.UserLogger.Info(xmlDoc.SelectSingleNode(xpath).InnerText);
//Object reference not set to an instance of an object
但是代码没有标签上的冒号就可以完美运行。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<s:Body xmlns:s=\"sssssss\"><SessionID>abcde</SessionID></s:Body>");
string xpath = "//*[local-name()='SessionID']";
Context.UserLogger.Info(xmlDoc.SelectSingleNode(xpath).InnerText);
//abcde
我已经在 XPATH 验证器上确保“//*[local-name()='s:SessionID']”工作正常。
我错过了什么?
提前致谢,
我已阅读有关信息,XmlNamespaceManager
但我更喜欢使用“直接”路径。XML 充满了 NameSpaces 并且是动态的,所以它的结构经常变化。