通过Xpath表达式删除前导空格

时间:2018-08-03 19:54:17

标签: xml xpath jira

我一直在寻找答案,但是找不到解决方法。

我有一个返回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>

1 个答案:

答案 0 :(得分:1)

对于大多数XPath表达式而言,紧接在根元素之前的空格的存在并不重要。这包括/root/employeesroot/employees。请注意,您最初发布的root/employee不会选择任何内容。

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