Измельчение XML нескольких вложенных элементов с одинаковым именем с помощью XPath - PullRequest
0 голосов
/ 19 ноября 2018

Я измельчаю большой XML-документ в таблицу и сталкиваюсь с некоторыми проблемами с вложенными структурами узлов, когда извлекаю идентификаторы из документа Вот пример XML-структуры (стилизованной):

<ROOT>
    <ENTITY>
        <UNIT>
            <ID>TEXT 1.0</ID>
        </UNIT>
        <ENTITY>
            <UNIT>
                <ID>TEXT 2.0</ID>
            </UNIT>
            <ENTITY>
                <UNIT>
                    <ID>TEXT 3.0</ID>
                </UNIT>
            </ENTITY>
            <ENTITY>
                <UNIT>
                    <ID>TEXT 3.1</ID>
                </UNIT>
                <ENTITY>
                    <UNIT>
                        <ID>TEXT 4.0</ID>
                    </UNIT>
                </ENTITY>
            </ENTITY>
        </ENTITY>
        <ENTITY>
            <UNIT>
                <ID>TEXT 2.1</ID>
            </UNIT>
            <ENTITY>
                <UNIT>
                    <ID>TEXT 3.2</ID>
                </UNIT>
            </ENTITY>
        </ENTITY>
    </ENTITY>
</ROOT>

Как видите, существует несколько вложенных узлов с одинаковыми именами (например, ENTITY и UNIT ), но мне нужны только два первых уровня ..

Я пробовал // UNIT / ID / text (), но я получаю ВСЕХ потомков ...

Моя идея состояла в том, чтобы, если бы я мог вернуть первые два уровня, я мог бы создать таблицу сопоставления, которая связывала бы верхний уровень с его прямыми дочерними уровнями ....

Мой желаемый результат будет выглядеть так:

ID (string)     SubID Array(string)
TEXT 1.0        {TEXT 2.0,TEXT 2.1}
TEXT 2.0        {TEXT 3.0,TEXT 3.1}
TEXT 2.1        {TEXT 3.2}
TEXT 3.0        {null}
TEXT 3.1        {TEXT 4.0}
TEXT 4.0        {null}

Если бы вы выбрали 2. уровень ID, вы бы получили, что уровни направляют идентификаторы дочерних уровней и т. Д. И т. Д., Как теоретически может продолжаться вложение.

...