这是我的xml
<result>
<client></client>
<message></message>
<record>
<message></message>
</record>
</result>
我想删除&#34;消息&#34;正好位于&#34;结果&#34; 当我尝试使用以下代码删除它时:
responseXml.Descendants().Where(e => e.Name == "client" || e.Name == "message").Remove();
正在删除&#34;消息&#34;这是&#34;记录&#34;但我不想要这个。 我只想删除&#34; message&#34;在&#34;结果&#34;
预期xml:
<result>
<client></client>
<record>
<message></message>
</record>
</result>
请在这里建议我。
答案 0 :(得分:5)
Descendants()
将返回所有元素(子女和子女等),而Elements()
只会返回直接子女。
responseXml.Root.Elements().Where(e => e.Name == "message").Remove();
您可以使用较短的.Element("message")
语法,但请注意,此方法仅返回找到的第一个元素。如果您有多个<message>
,它将不会返回/删除它们。
答案 1 :(得分:1)
void Main()
{
string xml =@"
<result>
<client></client>
<message></message>
<record>
<message></message>
</record>
</result>";
XElement root = XElement.Parse(xml);
root.Element("message").Remove();
}
直接在根节点下删除确切的元素“message”。
答案 2 :(得分:1)
您可以拨打Element(name)
,其中会返回一个XElement
(调用Elements
或Descendants
返回IEnumerable<XElement>
):
responseXml.Root.Element("message").Remove();