假设我将一个XML文档加载到内存中,并提取其中的一个元素。
XDocument doc = XDocument.Parse("<A><B><C/></B><D/></A>");
XElement b = doc.Descendants().Where(x => x.Name.LocalName == "B").Single();
Console.WriteLine(b);
这将返回<B><C/></B>
,因此我有一个XElement,它表示原始XML文档的一小部分。
现在我只想对提取的部分执行XPath选择,但是,使用XPathSelectElement/s的实验告诉我,所有XPath表达式都是在原始XML文档上操作的。b.XPathSelectElement("/A")
返回原始文档的根元素。b.XPathSelectElement("/B")
返回空值。b.XPathSelectElement("/")
引发异常“XPath表达式的计算结果为意外类型System. Xml. Linq. XDocument "。
如何仅对XElement的内容执行XPath选择?
(希望不需要转换为字符串并重新解析。)
1条答案
按热度按时间cig3rfwq1#
除非复制或克隆XML结构,否则只需使用相对于上下文节点的路径,如
这应该返回
<C />
元素。/
轴始终选择XML的文档节点。