从xml中删除特定节点
本文关键字:节点 删除 xml | 更新日期: 2023-09-27 18:12:27
这是我的xml
<result>
<client></client>
<message></message>
<record>
<message></message>
</record>
</result>
我想删除"结果"正下方的"消息"节点当我试图通过使用以下代码删除它时:
responseXml.Descendants().Where(e => e.Name == "client" || e.Name == "message").Remove();
它正在删除"记录"下的"消息",但我不想这样。我只想删除"结果"下的"消息">
预期xml:
<result>
<client></client>
<record>
<message></message>
</record>
</result>
请推荐我到这儿来。
Descendants()
将返回所有元素(children和grand-children等(,而Elements()
只返回直接的children。
responseXml.Root.Elements().Where(e => e.Name == "message").Remove();
您可能会使用较短的.Element("message")
语法,但请注意,此方法只返回找到的第一个元素。如果您有多个<message>
,它不会全部返回/删除它们。
void Main()
{
string xml =@"
<result>
<client></client>
<message></message>
<record>
<message></message>
</record>
</result>";
XElement root = XElement.Parse(xml);
root.Element("message").Remove();
}
删除根节点下的确切元素"message"。
您可以调用Element(name)
,它返回单个XElement
(调用Elements
或Descendants
返回IEnumerable<XElement>
(:
responseXml.Root.Element("message").Remove();