我有一个简单的 xml,我从中创建了一个 XmlDocument 并使用 Xpath 来获取一个节点,我需要将此节点传递给代码的其他部分,我可以在 XmlNode 对象上使用进一步的 xpath 函数来获取其他子节点。但是在下面的代码中
string xmlString = "<catalog><music><cds><cd><title>First Title</title><author>Author 1</author></cd><cd><title>Second Title</title><author>Author 2</author></cd></cds></music></catalog>";
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xmlString);
XmlNode musicNode = xmlDocument.SelectSingleNode("/catalog/music");
XmlNode cdsNode = musicNode.SelectSingleNode("/cds");
当我打印音乐节点的名称时,我得到了“音乐”,所以我假设我有“音乐”节点。所以我再次在音乐节点上应用 xpath 表达式“/cds”,假设我会得到“cds”XmlNode,但代码中的 cdsNode 返回未定义的值,但如果我这样做
XmlNode cdsNode = musicNode.SelectSingleNode("/catalog/music");
我再次获得了 cdsNode 的有效值,即“音乐”节点,我想 musicNode 代表 XmlDocument 而不是“音乐”XmlNode?我是否遗漏了什么,我来自 Java 并且在 Java 中使用 xpath 可以从 Node 导航到子节点,就像 musicNode 上的 xpath 表达式“/cds”会返回一个有效的 cdNode