How to delete nodes and subnodes using XDocument

一笑奈何 提交于 2019-12-13 23:39:25

问题


I have xml as under

<databaseserver>
   <server name="server1" serverid="1">
    <databases>
            <database dbid="1" dbname="db1" />
        <database dbid="2" dbname="db2" />
    </databases>
   </server>
   <server name="server2" serverid="2">
    <databases>
            <database dbid="1" dbname="db1" />
        <database dbid="2" dbname="db2" />
    </databases>
   </server>
   <server name="server3" serverid="3">
    <databases>
            <database dbid="1" dbname="db1" />
        <database dbid="2" dbname="db2" />
    </databases>
   </server>
</databaseserver>

I want to delete the nodes and it's subnodes whose serverid="1".

Final output will be

<databaseserver>   
   <server name="server2" serverid="2">
    <databases>
            <database dbid="1" dbname="db1" />
        <database dbid="2" dbname="db2" />
    </databases>
   </server>
   <server name="server3" serverid="3">
    <databases>
            <database dbid="1" dbname="db1" />
        <database dbid="2" dbname="db2" />
    </databases>
   </server>
</databaseserver>

How can I do so?


回答1:


var xDoc = XDocument.Load(filename);

xDoc.Descendants("server")
    .First(s => s.Attribute("serverid").Value == "1")
    .Remove();

var newXml = xDoc.ToString();

XPath is also possible

xDoc.XPathSelectElement("//server[@serverid='1']").Remove();


来源:https://stackoverflow.com/questions/17009994/how-to-delete-nodes-and-subnodes-using-xdocument

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!