Как вставить XML-узел 'item' в определенную позицию во вложенном списке C # - PullRequest
0 голосов
/ 16 мая 2019

У меня есть программа, которая строит 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.Поэтому, если бы я просто хотел добавить еще один элемент к текущему уровню 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 () или чего-то в этом роде.Есть идеи?

...