如何在java中修复unclosed-tag XML

时间:2010-01-09 11:18:25

标签: java xml

我正在使用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中的库,而不是独立应用程序。 感谢

3 个答案:

答案 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);