通过 Xpath 表达式删除前导白色 space

Remove leading white space via Xpath expression

我一直在寻找这个问题的答案,但一直找不到解决方案。

我接到电话说 returns 一份 xml 文件。我根本没有能力修改这份文件。在实际 XML 转储之前,有 40 个换行符和 1 个制表符。我想知道,仅使用 Xpath 表达式,如何忽略所有白色 space 并直接到达节点?

示例:

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<employees>
    <employee id="1">Johnny Dape</employee>
    <employee id="2">Al Pacino</employee>
    <employee id="3">Robert De Niro</employee>
    <employee id="4">Kevin Spacey</employee>
    <employee id="5">Denzel Washington</employee>
</employees>

Xpath expression: root/employee/  works as expected

但是在它前面放一吨白色 space 会导致它什么都拉不出来,如下所示

\n
<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<employees>
    <employee id="1">Johnny Dape</employee>
    <employee id="2">Al Pacino</employee>
    <employee id="3">Robert De Niro</employee>
    <employee id="4">Kevin Spacey</employee>
    <employee id="5">Denzel Washington</employee>
</employees>

紧接在根元素之前的空格对大多数 XPath 表达式没有影响。这包括 /root/employeesroot/employees。请注意,正如您最初发布的那样,root/employee 不会 select 任何内容。

禁止在 XML 声明 (<?xml version="1.0" encoding="utf-8"?>) 之前使用空格。在这种情况下,您必须删除此类空格以使 XML 文档成为 格式良好的 ,这是使用 XPath 的要求。 (请注意,您还必须关闭 root 元素 – 未显示在您发布的 XML 中。)