【问题标题】:loop in xml and delete some values在xml中循环并删除一些值
【发布时间】:2014-02-07 22:48:47
【问题描述】:

请帮忙

我也想遍历下面的所有 xml

并删除“Att1”和“Att2”

其他的不受影响

这里是示例 xml

<?xml version="1.0" encoding="utf-8"?>
<main>
    <example Att1="" Att2="" Att3="" Att4="" Att5="">
        <name>value</name>
        <name1>value</name1>
        <name2>value</name2>
        <name3>value</name3>
    </example>

    <example1 Att1="" Att2="" Att3="" Att4="" Att5="">
        <name>value</name>
        <name1>value</name1>
        <name2>value</name2>
        <name3>value</name3>
    </example1>

    <example2 Att1="" Att2="" Att3="" Att4="" Att5="">
        <name>value</name>
        <name1>value</name1>
        <name2>value</name2>
        <name3>value</name3>
    </example2>
</main>

对不起,我错了,很遗憾我不能发布原版

【问题讨论】:

  • 发布一个真实的xml。一个标签不能有两个同名的属性 (&lt;example Att1="" Att2="" Att2="" Att3="" Att3=""&gt;)。然后发布您迄今为止尝试过的内容,以便我们修复它。
  • 您应该查找 Linq-To-Xml,或者通过包含 System.Linq.Xml 并实例化一个 XDocument 来摆弄它。这很容易。
  • 嗨,是的 L.B 我对 XML 的看法是错误的(已更改)

标签: c# xml loops xmlnode


【解决方案1】:
var xDoc = XDocument.Load(filename); //XDocument.Parse(xmlstring);

xDoc.Descendants()
    .SelectMany(d => d.Attributes())
    .Where(a => a.Name == "Att1" || a.Name == "Att2")
    .ToList()
    .ForEach(x => x.Remove());

var newXml = xDoc.ToString(); //xDoc.Save(filename);

【讨论】:

  • 效果很好!!!谢谢 !!!你知道如何添加循环我想要的属性最终动态添加我想要删除的值。我正在考虑添加文本框或使用循环显示属性以及如何选择我需要的属性,提前致谢!!
猜你喜欢
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
相关资源
最近更新 更多