如何在嵌套列表C#中的特定位置插入XML“项目”节点

时间:2019-05-16 12:53:34

标签: c# xml linq-to-xml xelement

我有一个程序可以逐行构建XML,该程序从MS Word文档中提取内容。 XML可以包含嵌套的项目符号列表,如下所示。我需要能够指定需要插入我的商品的列表级别的能力。因此,这可能是最终的嵌套项目符号列表(列表中的列表)。

<bulletlist>
    <item>Level 1 item</item>
    <item>Level 1 item:
        <bulletlist>
            <item>Level 2 item</item>
            <item>Level 2 item
                <bulletlist>
                    <item>Level 3 item</item>
                    <item>Level 3 item</item>
                    <item>Level 3 item</item>
                </bulletlist>
            </item>
        </bulletlist>
    </item>
    <item>Level 1 item</item>
    <item>Level 1 item</item>
</bulletlist>

现在到这里,我的程序将查看Word中的段落缩进,确定它是哪个列表级别,然后构建XML结构。 因此,如果我只想在当前的Level 1中添加另一个项目,我就可以了。

content.Descendants("item")
                .LastOrDefault()
                .AddAfterSelf(new XElement("item", "some new text to go here"));

但是假设我有这个XML片段项目符号列表:

<bulletlist>
    <item>Level 1 item</item>
    <item>Level 1 item:
        <bulletlist>
            <item>Level 2 item</item>
            <item>Level 2 item
                <bulletlist>
                    <item>Level 3 item</item>
                    <item>Level 3 item</item>
                    <item>Level 3 item</item>
                </bulletlist>
            </item>
        </bulletlist>
    </item>
</bulletlist>

,现在我需要向“级别1”列表中添加另一个项目。我不能使用与上面相同的代码,因为它将只会将其添加到3级列表中。

我需要指定需要添加到哪个列表级别,而无需以任何方式识别XML。使用某种索引而不是lastOrDefault()或类似的方式。有什么想法吗?

0 个答案:

没有答案