gpt4 book ai didi

c# - 使用 Linq to XML 删除父元素

转载 作者:行者123 更新时间:2023-11-30 14:37:34 25 4
gpt4 key购买 nike

我有一个这样的 XML 文件

<BallList>
<Brand name="xyz">
<BallName>ball A</BallName>
<DateApproved>Jan-12</DateApproved>
<link>www.a.com</link>
</Brand>
<Brand name="abc">
<BallName>Ball B</BallName>
<DateApproved>Jan-02</DateApproved>
<link>www.b.com</link>
</Brand>
</BallList>

通过这种方式,大约有 150 个品牌和 8000 个球名。我知道这不是表示 XML 的好方法,但现在由于数据庞大,无法修改结构。

我需要通过比较它的球名来删除“Brand”节点

这是我正在尝试的代码:

XElement doc = XElement.Load(Server.MapPath("NetBalls.xml"));
doc.Elements("Brand")
.Where(s => s.Attribute("name").Value == DropDownList1.SelectedItem.Text)
.Elements("BallName")
.Where(l => l.Value == textbox1.Text)
.AncestorsAndSelf()
.Remove();

我正在尝试搜索品牌并进入其元素节点并检查其节点并删除其父节点。

谁能帮我解决这个问题?

最佳答案

无需向下导航到子节点并再次返回,只需将子级标准嵌入到针对您实际需要的元素的 Where 查询中:

doc.Elements("Brand")
.Where(s => s.Attribute("name").Value == selectedBrand)
.Where(s => s.Elements("BallName").Any(l => l.Value == selectedValue))
.Remove();

这样,您的 Linq 查询更符合您的英语查询:“找到名称属性为 x 且 Ballname 元素为 y 的所有 Brand 元素,并将其删除。”

关于c# - 使用 Linq to XML 删除父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com