好的,所以我整天都在为 XPATH 和 C# 中的这个问题而烦恼。
我有以下 XML 文档:
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0">
<item id="362">
<title>Family Holiday</title>
<description>a long, wordy description goes here</description>
<g:id xmlns:g="g">FPS</g:id>
<g:latitude xmlns:g="g">42.502260</g:latitude>
<g:longitude xmlns:g="g">1.532850</g:longitude>
</item>
</entry>
然后我执行以下操作:
XmlDocument _xmlDocument = new XmlDocument();
_xmlDocument.Load(xmlfile);
XmlNamespaceManager _nameSpaceManager = new XmlNamespaceManager(_xmlDocument.NameTable);
_nameSpaceManager.AddNamespace("RN", "http://www.w3.org/2005/Atom");
_nameSpaceManager.AddNamespace("g", "http://base.google.com/ns/1.0");
_nameSpaceManager.AddNamespace("c", "http://base.google.com/cns/1.0");
XPathNavigator navigator = _xmlDocument.CreateNavigator();
我的问题在于:
XmlNode nde = _xmlDocument.SelectSingleNode("/RN:entry/RN:item/g:id", _nameSpaceManager);
返回 null - 不是 Id 节点。然而,
XmlNode nde = _xmlDocument.SelectSingleNode("/RN:entry/RN:item/RN:title", _nameSpaceManager);
确实返回标题节点。
任何关于我做错了什么的想法都将不胜感激!
干杯西蒙