通过在标记的末尾添加“/”来格式化XMl Document

时间:2009-10-01 11:01:41

标签: java xml regex

所以,我有一些格式不正确的xml文档,一些空标签()最后没有“/”,例如:<loader local="test.bat" dir="/usr/home"> 我怎么能优雅(使用正则表达式:))为这个标签添加每个“loader”标签“/”(使用Java);必须是:

 <loader local="test.jpg" dir="/usr/home"/>

3 个答案:

答案 0 :(得分:2)

我不确定是否有正则表达式可以在通用xml文档中执行此操作,但如果您只想将它​​们转换为有效的xml,则可以使用整洁。

例如它集成在notepad ++中

TextFX - TextFx Html Tidy - Tidy Reindent Xml

<abc>
    <loader local="test.jpg" dir="/usr/home"/>
</abc>

结果

<abc>
  <loader local="test.jpg" dir="/usr/home" />
</abc>

这可能是你所期望的。 Tidy也可以集成到像在notepad ++中完成的应用程序

答案 1 :(得分:1)

这可能没有太大帮助,但我认为总体上可以节省时间

如果我遇到这种问题,我要做的第一件事就是去数据提供者并要求他们提供正确的文件。如果他们说他们会提供xml,那么他们应该提供一个有效的文件,xml是一个定义良好的标准,很容易说文件无效。

XML的一个主要优点是它是一个标准,您可以使用许多经过良好测试和支持的工具。如果文件不是xml那么它是另一个未记录的东西,每个人都必须花时间处理这些混乱。

只有当供应商无法修复它然后进行编码 - 然而供应商未能履行合同,这将影响您将来如何处理它们。

答案 2 :(得分:0)

常用免责声明:请注意regular expressions are really not the best choice for processing xml。几乎你在这里看到的任何正则表达式都会以某种形式存在缺陷,所以这个答案中的正则表达式并不是用于任意代码,而是用于高度控制的使用。

这是一个可能的解决方案(例如,如果在属性中有关闭尖括号,则无效)

xml.replaceAll("<loader\\b(.*?)>", "<loader$1/>");