使用 XPath 获取 XML 部分

时间:2021-06-21 14:39:36

标签: xml xpath

我有以下 xml(TEI) 结构:

<?xml version="1.0"  encoding="UTF-8"?>
<?xml-model href="../schema/tei_color.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="../schema/tei_color.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
    <teiHeader>
    </teiHeader>
    <text xml:id="Z_1822-02-20_k" xml:lang="ger">
        <body>
            <div>
                <div rendition="simple:half-broken">
                    <pb n="46r" facs="#Z_1822-02-20_k_A_0001"/>
                    <cb rendition="simple:column-left"/>
                </div>
                <div>
                    <cb rendition="simple:column-right"/>
                    <p>
                        <handShift scribeRef="#Z_1822-02-20_k_scrb_1_t"/>Auf
                        <pb n="46v" facs="#Z_1822-02-20_k_A_0002"/>
                        <hi rendition="simple:italic">Heliostaten</hi> von dem Herrn Geheimen<lb/>Post-Rath
                    </p>
                </div>
            </div>
        </body>
    </text>
</TEI>

使用 XPath 如何获取 pb 元素,包括其下的 xml 内容。

1 个答案:

答案 0 :(得分:0)

根据您使用 xpath 的语言,您可以使用 2 种不同的 XPath,如下所示:

//pb

//pb/following-sibling::*

或者,如果您可以在变量中重用 //pb,只需使用通过 XPath 扩展的变量:

./following-sibling::*

或者使用联合运算符 | 合而为一:

//pb | //pb/following-sibling::*

如果其下的xml内容可能只是纯文本,则应使用:

//pb | //pb/following-sibling::node()

node() 将选择所有节点,包括 text()-nodes 以及 element()-nodes。有关 node() 的更多信息,请参阅 this answer

相关问题