2016-06-28 6 views
-2

Я сравниваю две строки XML, но хочу удалить какой-либо конкретный атрибут , прежде чем сравнивать их.Редактирование XML перед сравнением с другим 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> и все данные в этих тегах, прежде чем сравнивать их.

+0

Ваш xml недействителен. < selecttables> не имеет закрывающего тега. –

+0

@PhilB Я скопировал определенную часть и и значение xml не является проблемой – Asim

+0

'' - это элемент, а не атрибут. – Filburt

ответ

1

Подобно my own question about removing comments вы можете сделать это:

// 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.

1

Вы можете сделать это очень тривиально с помощью LINQ к XML:

var doc = XDocument.Parse(xml); 

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

См this fiddle для демонстрации.

Смежные вопросы