在与另一个XML进行比较之前编辑XML

本文关键字:XML 编辑 比较 另一个 | 更新日期: 2023-09-27 17:52:43

我比较两个XML字符串,但希望在比较它们之前删除一些特定的属性元素。

我想删除<orderby> 属性元素和这些标签中的所有数据

XML 1:

<query>
<selecttables>
  <field>
    <tablerscd>1014</tablerscd>
    <tablename> OEM IHS Engines</tablename>
   </field>
   <orderby>
   </orderby>
</selecttables>
</query>
XML 2:

<query>
<selecttables>
   <field>
     <tablerscd>1014</tablerscd>
     <tablename> OEM IHS Engines</tablename>
   </field>
   <orderby>
      <columnrscd>1228</columnrscd>
      <columnrscd>1229</columnrscd>
   </orderby>
  </selecttables>
</query>

我的问题是:

在我比较它们之前,我如何删除<orderby>属性和这些标签中的所有数据。

在与另一个XML进行比较之前编辑XML

类似于我自己关于删除注释的问题,你可以这样做:

// load your Xml string into an XDocument
var xml = XDocument.Parse(yourxmlstringhere);
foreach (var node in xml.SelectNodes("//orderby").ToList())
{
    node.ParentNode.RemoveChild(node);
}

这将找到所有的orderby元素,导航到它们的父元素,并从那里删除它们。

我采纳了Anthony的回答,他指出在删除之前创建一个List会更安全。

您可以非常简单地使用LINQ to XML:

var doc = XDocument.Parse(xml);
doc.Descendants("orderby").Remove();