使用 Linq to XML 访问 XML 中的二级节点
Posted
技术标签:
【中文标题】使用 Linq to XML 访问 XML 中的二级节点【英文标题】:Access a 2nd level node in XML using Linq to XML 【发布时间】:2012-11-22 08:56:29 【问题描述】:我有以下 XML 文件:
<tree>
<branchs>
<branch id=1>
<apple id=1 color=green/>
<apple id=2 color=red/>
</branch>
<branch id=2>
<apple id=1 color=green/>
<apple id=2 color=red/>
</branch>
</branchs>
</tree>
我希望 SQL 命令从分支 id 1 访问苹果 id#1,而不是更改颜色(第一次),然后能够从这个分支中删除这个苹果。
我尝试了以下方法来移除一个苹果,但没有任何结果
XDocument doc = XDocument.Load(myxmlFile);
var result = (from selectedApples in
(from selectedBranch in doc.Element("Branchs").Elements("Branch)
where selectedBranch.Attribute("id").Value == 1
select selectedBranch)
where selectedApples.Attribute("id").Value == 1
select selectedApples).ToList();
result.ToList().ForEach(apple => apple.Remove());
我想我犯了一个错误...我想我也离解决方案不远了...
有什么帮助吗?
【问题讨论】:
【参考方案1】:不确定它是否是优化的解决方案......但它正在工作。
XDocument doc = XDocument.Load(myxmlFile);
var results = from selectedApples in doc.Root.Element("branchs").Descendants()
where selectedApples.Attribute("id").Value == 1
select selectedApples.Elements("apple");
foreach(var result in results)
result.Where(a => a.Attribute("id").Value == 1).ToList().Foreach(a => a.Remove());
doce.Save(myxmlFile);
【讨论】:
以上是关于使用 Linq to XML 访问 XML 中的二级节点的主要内容,如果未能解决你的问题,请参考以下文章
有没有更快的方法来检查 LINQ to XML 中的 XML 元素?