XMLStarlet删除结束标记

时间:2014-01-09 14:02:44

标签: xml xmlstarlet

遇到xmlstar问题。 它会删除空标签,如何禁用它?

输入:

<tag1>test1</tag1>
<tag3></tag3>
<tag4>test3</tag4>

输出:

<tag1>test1</tag1>
<tag3/>
<tag4>test3</tag4>

我想要相同的输出,所以不会删除结束报价。

希望有人能快速回答。

2 个答案:

答案 0 :(得分:2)

在XML中,<a></a><a/>(注意/)在语义上是相同的。无论什么应用程序消耗文档都不应该关心这种变化。

我对xmlstarlet一无所知,但如果它的序列化程序没有选项来生成更详细的表单,则可能需要对文档进行后处理。

如果你绝对需要以前的版本,你有四个选择:找一个XML序列化器,它将写出该表单中的空元素(你可能使用的那个可能有也可能没有选项),修改XML序列化程序写出该表单中的空元素,编写自己的XML序列化程序(不推荐;这不是很难,但如果你问这个问题有详细信息可以给你带来麻烦),或者在写完文本之后对文本进行后处理将<a></a>的所有实例更改为<a/>

实际上,还有另一种可能性。如果你的其他程序需要长格式的原因是因为它需要HTML,你应该使用HTML序列化程序而不是XML序列化程序。

答案 1 :(得分:0)

我知道它是一样的。 但我之所以需要的是工具应该reed这不支持这种格式的xml。它需要结束标记。

所以我会对任何有想法的人感兴趣。

文件的标题是。 所以它的工具是读取文件的。

<?xml version="1.0" encoding="iso-8859-1"?>

<project>
  <fileVersion>2</fileVersion>
  <configuration>
    <name>Debug</name>
    <toolchain>
      <name>ARM</name>
    </toolchain>