【问题标题】:How to fix unclosed-tag XML in java如何在java中修复未封闭标记的XML
【发布时间】:2010-01-09 11:18:24
【问题描述】:

我正在使用 StaX 在 java 中解析 XML,但我的 XML 格式不正确,因此解析器会抛出错误。在 XML 中,有未闭合的标签

例如:

<person>
  <name>John</name>
  <age>21
  ...
  ...
</person>

&lt;age&gt; 标签没有封闭标签&lt;/age&gt;。所以我需要先修复 XML..

如何修复 XML 以关闭未闭合标签?

有没有图书馆可以做到这一点?我试过 JTidy & HTMlCleaner,但我仍然不知道如何修复 XML。我需要java中的库,而不是独立的应用程序。 谢谢

【问题讨论】:

  • 不,当我检查时,我发现还有其他标签没有封闭标签。
  • 更正:是的,目前只有一个标签没有闭合标签。抱歉之前的回答,我遇到了其他问题。
  • Rizent 有解决方案吗?渴望知道是否有任何可用的解决方法!

标签: java xml


【解决方案1】:

我认为没有现成的解决方案来修复 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>

我认为这种逻辑只能通过自定义字符串解析器来处理,您可以在其中说明如何转换数据。

【讨论】:

  • 那么,该怎么做呢?用 关闭
  • 我已经读到 HTMLCleaner/tidy 可以为 HTML 格式做到这一点,但不是 XML。我想知道,HTMLCleaner 是如何做到这一点或修改它的
【解决方案2】:

找到生成 XML 的人,然后把他们打得一头雾水。

文档总是格式正确是 XML 的一个基本点。这非常非常容易做到,同样容易测试,它是其他一切的基石。是否有人在编写代码,甚至无法做到这一点,他们不配作为程序员工作。说真的,他们应该是翻转汉堡或挖沟。

编写代码来处理他们糟糕的代码并不是一个好的长期解决方案。它对解决他们蹩脚代码的问题没有任何帮助。

我很感激这可能没有多大帮助。

【讨论】:

  • 或者告诉他们切换到 YAML,这样他们就不必关闭那些讨厌的标签。
【解决方案3】:

您可以尝试关闭验证,而不是修复 XML:

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_VALIDATING, false);

【讨论】:

  • 还是报错,无法继续解析。当我阅读 javadoc 时,IS_VALiDATING 是 DTD 验证
  • “有效”的意思不同于“格式良好”
猜你喜欢
  • 2019-12-24
  • 2015-03-21
  • 2017-11-10
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
相关资源
最近更新 更多