gpt4 book ai didi

c# - XML元素移除,只需要删除一个非父元素

转载 作者:行者123 更新时间:2023-11-30 22:15:09 24 4
gpt4 key购买 nike

基本上我想做的是从列表中删除一个 VSLOC。我不想删除属于它的所有内容。

<?xml version="1.0"?>
<GarageNumbers>
<G554>
<id>G554</id>
<VSLOC>V002</VSLOC>
<VSLOC>V003</VSLOC>
<VSLOC>V002</VSLOC>
</G554>
<G566>
<id>G566</id>
<VSLOC>V002</VSLOC>
<VSLOC>V003</VSLOC>
<VSLOC>V002</VSLOC>
</G566>
<G572>
<id>G572</id>
<VSLOC>V001</VSLOC>
<VSLOC>V002</VSLOC>
</G572>
</GarageNumbers>

因此,我设置的是一个组合框,我选择一个 G#,从中将所有与其关联的 VSLOC 显示在一个列表框中。我需要做的是从列表框中选择一个项目,然后使用按钮从列表框和 xml 文档中删除该行。我有所有这些设置,但是当我按下按钮时,它会删除 G554 和所有带 in 的元素。

因此,如果我想从 G554 的列表中选择 V002,我希望它只删除带有该内部文本的 VSLOC。

XmlDocument xDoc = new XmlDocument();
xDoc.Load(Application.StartupPath + "/xmlData.xml");
foreach (XmlNode xNode in xDoc.SelectNodes("GarageNumbers/G554"))
if (xNode.SelectSingleNode("VSLOC").InnerText == "V002")
xNode.ParentNode.RemoveChild(xNode);
xDoc.Save(Application.StartupPath + "/xmlData.xml");

最佳答案

您应该能够深入到所需的元素,然后将其删除。例如,假设您的 XML 位于 XElement 中,则此方法可行:

string targetCategory = "G554";
string vsloc = "V002";

xml.Element(targetCategory)
.Elements("VSLOC")
.Where(e => e.Value == vsloc)
.Remove();

如果您使用的是 XDocument,则添加 Root 属性:xml.Root

关于c# - XML元素移除,只需要删除一个非父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136358/

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