【问题标题】:How do I remove an XML element based on the value of its attribute如何根据其属性的值删除 XML 元素
【发布时间】:2018-08-22 15:21:07
【问题描述】:

我很难弄清楚如何做到这一点,而且由于这是我第一次使用 xml 做任何事情,我想我应该请更有经验的人来节省一些时间。

我知道如何删除元素。我已将 xml 加载到 XDocument 中。我知道如何读取元素,并获取元素属性的值。我只是不知道如何根据属性值删除相同类型的多个元素。这是我要使用的 XML 示例。我想用type="SetName"删除所有效果元素

<tech name="Name" type="Normal">
    <displaynameid>11166</displaynameid>
    <effects>
        <effect type="TextOutput"></effect>
        <effect type="Data"></effect>
        <effect type="Data"></effect>
        <effect type="SetName"></effect>
        <effect type="SetName"></effect>
        <effect type="Data"></effect>
        <effect type="SetName"></effect>
        <effect type="SetName"></effect>
        <effect type="SetName"></effect>
    </effects>
</tech>

【问题讨论】:

  • 欢迎 DeuSJS!您能否提供一些数据示例以及您迄今为止尝试过的内容?我们可以更好地提供帮助:)
  • 好的,刚刚编辑了。
  • 查看这个 stackoverflow 问题的答案。这是完全相同的问题,但显然不同的 xml 数据。 stackoverflow.com/questions/28169101/…
  • 在循环xml元素时基本上不能删除。所以继续在列表中添加感兴趣的元素,然后在循环之后删除它们

标签: c# xml linq-to-xml


【解决方案1】:

这不是您问题的答案,因为您的问题太抽象了。但由于这将是一个很长的评论,因此我将其写为答案。

让我们一步一步解决您的问题。

如果你不知道如何在 c# 中读取 xml,那么你可以阅读 XElement 或 XmlReader

如果您不知道如何读取 xml 元素,请在 Google 上搜索“遍历 xml c#”之类的内容

如果您不知道如何读取元素属性,那么 XElement 具有 Attributes 属性,该属性返回 XAttribute 的集合,该集合具有属性 Value

如果您不知道如何删除子元素,请查看以下链接How to delete specific nodes from an XElement?

【讨论】:

  • 是的,你是对的,我将编辑我的原始帖子以使其更清晰
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2016-01-22
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多