使用LINQ-to-XML通过xpath查找或创建元素

mil*_*eyd 7 c# xpath linq-to-xml

有没有人使用xpath表达式找到或创建XObject的简洁方法.

我遇到的问题是我需要在一个元素(我有xpath)上设置一个值,这个值可能存在也可能不存在.如果它不存在,我希望它被创建.

非常感谢任何提示或链接.

谢谢大家.

Chr*_*ham 1

您可以使用 System.Xml.XPath.Extensions 类来计算 XDocument 上的 XPath 表达式。

http://msdn.microsoft.com/en-us/library/system.xml.xpath.extensions.aspx

例如:

using System.Xml.XPath;
...
XDocument doc = XDocument.Load("sample.xml");
var matching = doc.XPathEvaluate("//Book[@Title='Great Expectations']");  
// 'matching' could be an IEnumerable of XElements, depending on the query
Run Code Online (Sandbox Code Playgroud)

  • 我认为在 .Net 或一般情况下这是不可能做到的,因为 XPath 是一种查询语言,您无法推断出必须创建哪些单链节点才能满足其条件,因为可能存在无限多个有效的层次结构。在示例中,“//Book”表示“文档中任意位置的 Book 元素”,因此如果您要创建该节点,那么您会将其放在哪里? (2认同)