如何根据Xdocument中的兄弟值将新元素中的兄弟元素划分?

时间:2016-03-04 07:07:44

标签: c# xml linq-to-xml

我有这些输入元素:

var codes = GetCodes(yourData).ToList();

如何将num个元素之间的元素转换为新元素,所以最后我有了这个:

<Entry>
  <pos STYLE="NUM">1</pos >
  <tran></tran>
  <pos  STYLE="NUM">2</pos >
  <example></example>
  <pos  STYLE="NUM">3</pos >
  <elem></elem>
</Entry>
<Entry>
  ...
</Entry>

编辑:: sofar我加载xml文档迭代所有元素并做一些与此问题无关的格式

<Entry>
  <body>
    <tran></tran>
  </body>
  <body>
    <example></example>
  </body>
  <body>
    <elem></elem>
  </body>
</Entry>

1 个答案:

答案 0 :(得分:0)

可以将其视为重组入口元素内容的分组问题:

        XDocument doc = XDocument.Load("input.xml");
        foreach (XElement entry in doc.Descendants("Entry").ToList())
        {
            foreach (var group in entry.Elements().Except(entry.Elements("pos")).GroupBy(child => child.ElementsBeforeSelf("pos").Last()))
            {
                group.Remove();
                group.Key.ReplaceWith(new XElement("body", group));
            }
        }
        doc.Save("output.xml");