Linq XML添加新的父元素

本文关键字:元素 XML 添加 Linq | 更新日期: 2023-09-27 18:02:34

使用linq XML是否可以向现有节点添加新的父节点?以以下XML节选为例:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<items>
 <book>
  <title>Title 1</title>
  <author>Author 1</author>
 </book>
 <book>
  <title>Title 2</title>
  <author>Author 2</author>
 </book>
 <car>
  <model>Tesla</model>
 </car>
</items>

是否可以像这样添加一个新的父亲"books"到book:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<items>
 <books>
  <book>
   <title>Title 1</title>
   <author>Author 1</author>
  </book>
  <book>
   <title>Title 2</title>
   <author>Author 2</author>
  </book>
 </books>
  <car>
   <model>Tesla</model>
  </car>
</items>

这不能工作,因为它正在克隆节点:

doc.Element("items").Add(new XElement("books",doc.Element("items").Elements("book")));

Linq XML添加新的父元素

您可以将现有的<book>元素从<items>节点中删除,然后将它们添加到新的<books>父节点下:

var books = doc.Element("items").Elements("book");
doc.Element("items").Add(new XElement("books", books));
books.Remove();
相关文章: