xml - 通过 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>
解决方案
在根元素之前出现的空白对大多数 XPath 表达式没有影响。这包括/root/employees
或root/employees
。请注意root/employee
,正如您最初发布的那样,不会选择任何内容。
<?xml version="1.0" encoding="utf-8"?>
禁止XML 声明 ( ) 之前的空格。在这种情况下,您必须删除这些空格以使 XML 文档格式正确,这是使用 XPath 的要求。(请注意,您还必须关闭该root
元素 - 未显示在您发布的 XML 中。)
推荐阅读
- aws-lambda - 在保持迭代器输出的同时将输入传递给 Step Function 中的迭代器
- c# - 如何使用 XPATH 将元素添加到行项目
- java - 使用 CompletableFuture 的异步计算,它在 for 每个循环中返回一个对象
- gatsby - Gatsby:生成嵌套的动态路由
- postgresql - 是否可以仅从最新的 PostgreSQL 转储中恢复新更改
- php - 一些 PHP 代码被执行——一些没有
- python - 导致 NaN 的旋转但索引不匹配问题
- scala - 我应该如何处理 Scala 中的“匹配可能并不详尽”警告?
- vue.js - Nuxt.js npm run build 导致一些 JS 文件找不到
- php - 防止 utf8_encode() 弄乱字符