0

例のタグがあります

<book>
<firstHalf>  </firstHalf>

<secondHalf>   </second half>
</book>

私の要件は、以下のように前半と後半を分離する必要があることです

<book>
<firstHalf>  </firstHalf>
</book>
<book>
<secondHalf> </second half>
</book>

そのため、最初に新しいブックの終了タグを追加し、次にブックの開始タグを追加する必要があります。p- linq の使用

私はそれを行う方法がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0
var xmlStr = @"<root>
    <book>
        <firstHalf></firstHalf>
        <secondHalf></secondHalf>
    </book>
</root>
";
var doc = XDocument.Parse(xmlStr);

// find all books
var books = doc.Descendants("book").ToList();
    // p.s., need ToList() since we're modifying the structure
foreach (var book in books)
{
    // get all the "extra" elements
    var extraElements = book.Elements().Skip(1).ToList();
    if (extraElements.Any())
    {
        // remove the extra elements from the current book
        extraElements.Remove();
        // create new books after this book with the extra element
        book.AddAfterSelf(extraElements.Select(e => new XElement("book", e)));
    }
}

収量:

<root>
  <book>
    <firstHalf></firstHalf>
  </book>
  <book>
    <secondHalf></secondHalf>
  </book>
</root>
于 2012-09-02T03:07:46.457 に答える