我正在使用StaX在java中解析XML,但是我的XML格式不正确,因此解析器会抛出错误。在XML中,有unclosed-tags
例如:
<person>
<name>John</name>
<age>21
...
...
</person>
<age>
标记没有关闭标记</age>
。所以我需要先修复XML ..
如何修复XML以关闭unclosed-tag?
有一个库可以做到这一点吗?我试过JTidy&amp; HTMlCleaner,但我仍然无法弄清楚如何修复XML。我需要java中的库,而不是独立应用程序。 感谢
答案 0 :(得分:7)
我认为没有现成的解决方案来修复XML。那是因为不可能知道是否
<person>
<name>John</name>
<age>21
<birthDate>...</birthDate>
...
</person>
是
<person>
<name>John</name>
<age>21
<birthDate>...</birthDate>
</age>
...
</person>
或
<person>
<name>John</name>
<age>21</age>
<birthDate>...</birthDate>
...
</person>
我认为这种逻辑只能用自定义字符串解析器来处理,你可以在其中说明如何转换数据。
答案 1 :(得分:4)
找到生成XML并将其打败的人。
XML的一个基本点是文档总是格式良好。这非常非常容易做到,同样容易测试,而且它是其他一切的基石。有人在那里编写代码甚至无法做到这一点,他们不配作为程序员。说真的,他们应该翻转汉堡或挖沟。
编写代码来处理他们糟糕的代码并不是一个好的长期解决方案。它无法解决他们糟糕的代码问题。
我很欣赏这可能没什么用。
答案 2 :(得分:0)
您可以尝试通过以下方式修改XML,而不是修复XML:
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_VALIDATING, false);