C# 在与另一个XML进行比较之前编辑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 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,现在你能回答我的问题了吗?