xml - 使用 XMLlint 对空 XML 标签进行无效格式化

标签 xml linux xmllint

我有一个未格式化的 XML 文档,如下所示:

<foo>
<bar>
<hop>
<hey>
</hey>
</hop>
</bar>
</foo>

如您所见,标签“hey”为空。我记得在这种情况下,应该写成<hey/> ,但这不是我可以改变的事情。

为了格式化此文档,我使用 xmllint --format命令。但不是输出

<foo>
  <bar>
    <hop>
      <hey>
      </hey>
    </hop>
  </bar>
</foo>

<foo>
  <bar>
    <hop>
      <hey></hey>
    </hop>
  </bar>
</foo>

它输出

<foo>
  <bar>
    <hop>
      <hey>
</hey>
    </hop>
  </bar>
</foo>

这不是我想要的。我尝试编写一个 sed 命令,以便在 xmllint 工作后缩进这些特定标记,但我无法阻止 sed 加载整个(巨大)xml 文件,并且花费了几分钟,比 xmllint 还要多。

解决方案是找到一个选项来要求 xmllint 正确格式化这些标记,但我在 man.xml 中找不到它。你知道什么可以帮助我吗?

最佳答案

hey 元素不为空,它包含一个值为换行符的文本节点。重新格式化 XML 的过程通常会尊重这一点,并保持元素的值不变。

关于xml - 使用 XMLlint 对空 XML 标签进行无效格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49174081/

相关文章:

c# - 将 XML 文件读入 XmlDocument

c - x86, amd64 : Why SIGTRAP' ucontext instruction pointer does not point to related int3

linux - 在 Linux 中查找进程的内存使用情况

xml - native shell 命令集用于从 XML 中提取节点值

xml - 用 header 和主标记包围 xml 正文

java - java SE 或 jaxb 中的 JSR 303 Bean 验证

javascript - jQuery,将单个 xml 列表解析为多个无序列表

android - 为什么 android xml 文件名必须只包含小写字母和数字 ([a-z0-9_.])?

linux - Window 选项 Eclipse 中缺少 Avd 和 sdk 管理器

python - 如何从 XML 中提取重复的 n 个标签之间的行并继续直到最后一个标签?