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

C# 在与另一个XML进行比较之前编辑XML,c#,xml,string,split,C#,Xml,String,Split,我正在比较两个XML字符串,但希望在比较它们之前删除一些特定的属性元素 我想删除属性元素和这些标记中的所有数据 XML 1: <query> <selecttables> <field> <tablerscd>1014</tablerscd> <tablename> OEM IHS Engines</tablename> </field> <orderby>

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

我想删除
属性元素和这些标记中的所有数据

XML 1:

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

1014
OEM IHS发动机
XML 2:

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

1014
OEM IHS发动机
1228
1229
我的问题是:

在比较这些标记之前,如何删除属性和这些标记中的所有数据。

类似于您可以执行的操作:

// 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
元素,导航到它们的父元素并从中删除它们


我采纳了来自的这个答案,他指出在删除之前创建一个
列表将更安全。

您可以使用LINQ to XML轻松地完成这项工作:

var doc = XDocument.Parse(xml);

doc.Descendants("orderby").Remove();

请参阅以获取演示。

您的xml无效。selecttables>没有结束标记。@PhilB我复制了特定部分,而xml有效性不是问题所在
是一个元素,而不是一个属性。具有无效的xml将显著限制您的选项,如果这确实不是xml,则您应该从问题中删除xml引用。@PhilB我已更正xml,现在你能回答我的问题了吗?