XML使用XPath分解具有相同名称的多个嵌套元素

时间:2018-11-19 13:31:21

标签: xml xpath xml-parsing

我将一个大型XML文档切成一张表,并遇到了嵌套节点结构的一些麻烦,在那里我要从文档中提取ID。 这是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 ),但我只想要两个第一层。 / p>

我已经尝试过// 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,您将获得直接指导子级别ID等的级别,因为理论上的嵌套可能会不断进行。

0 个答案:

没有答案