使用xmllint重新缩进xml文件(包含混合内容)

时间:2013-08-28 13:53:58

标签: xml bash pretty-print mixed xmllint

我的问题可能是愚蠢的,或者缺乏信息,我很抱歉。 我会尽量像我认为的那样具有描述性。

我们有很多xmls,可能有数百个模式(不同的根/元素名称,不同的属性)。 在编写代码时,许多开发人员错误地在这些xmls中添加了混合内容(只有我们的架构是--->“没有混合内容”)。

我们想重新缩进xml文件,但上面提到的混合内容给我们带来了问题。我们唯一的xml解析器/实用程序是xmllint(由于某些约束,我们无法获取其他实用程序)。

例如:

<A>
mixed data<B>
<C>text data</C>
</B>
      <D>new data</D>
</A>

运行后(我添加到xmllint的选项只是随机尝试)

  

xmllint --recover --encode“ISO-8859-1”--format data.xml

我得到以下内容:

<?xml version="1.0" encoding="ISO-8859-1"?>
<A>
mixed data<B><C>text data</C></B>
      <D>new data</D>
</A>

我已经提到标签为A-D作为例子,因为我们的xml中的元素有数百个可能的值..我想为以下两个提供一些帮助:

1)找出哪些文件有混合内容。由于我们有很多文件,我宁愿使用bash脚本(或任何这样的脚本) 2)正确格式化xml文件的方法。

任何帮助都将深表感谢。一段时间以来,我一直在讨论这个问题,这样看起来非常简单,对我来说已经证明是非常艰难的。 我们系统的其他信息是我们使用的是Unix,如果需要,我们可以使用perl的帮助。 (但我们没有Twig或LibXML :: PrettyPrint)

0 个答案:

没有答案