首页 > 解决方案 > 通过 Xpath 表达式删除前导空格

问题描述

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

我有一个返回 xml 文档的调用。我根本没有能力修改这个文件。在实际的 XML 转储之前,有 40 个换行符和 1 个制表符。我想知道,仅使用 Xpath 表达式,我如何忽略所有这些空白并直接到达节点?

例子:

<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

但是在它之前放置大量空白会导致它不拉任何东西,如下所示

\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>

标签: xmlxpathjira

解决方案


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

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


推荐阅读