繁体   English   中英

使用xpath选择节点

[英]Select node with xpath

我想使用xpath进入xml的深层链接,并且其中还有一个名称空间。 目前我有:

XmlNode link = xmlDoc
    .SelectSingleNode("dn:feed", nsmgr)
    .SelectSingleNode("dn:entry", nsmgr)
    .SelectSingleNode("dn:link", nsmgr);

这很好用,但是由于路径很长,所以我只想使用类似xpath的方法:

XmlNode link = xmlDoc.SelectSingleNode("dn:feed/entry/link", nsmgr);

但这是行不通的。

我怀疑这是一个名称空间问题。 您只为feed元素指定名称空间,而不为entrylink指定名称空间。 尝试这个:

XmlNode link = xmlDoc.SelectSingleNode("dn:feed/dn:entry/dn:link", nsmgr);

我个人会尽可能使用LINQ to XML-除了是比XmlDocument更好的API外,它使使用名称空间确实非常容易:

XDocument doc = ...;
XNamespace dn = "...";
XElement link = doc.Element(dn + "feed")
                   .Element(dn + "entry")
                   .Element(dn + "link");

我更喜欢在代码而不是XPath中表达我想要的内容(属性,元素等,以及适当的条件)。 当然,您的里程可能会有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM