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