【问题标题】:Using a XML schema to fix an XML in Java在 Java 中使用 XML 模式修复 XML
【发布时间】:2012-02-16 15:06:23
【问题描述】:

有没有人知道一种工具可以让我在 Java 中获取 XML 字符串,根据模式检查它,如果它格式不正确,可以修复它?
例如,给定以下架构和 xml 代码

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

  <xs:element name="tag">
   <xs:element name="subtag" type="xs:token" />
  </xs:element>
</xs:schema>


<tag>
<subtag>content
</tag>

我正在寻找一种工具,它可以读取架构、解析 XML、注意丢失的标签并添加它。出于这个特定程序的目的,除了缺少标签之外,我不需要任何更正。 (顺便说一句,无需使用模式即可定位和添加缺失标签的工具也很好)。
有什么建议?

【问题讨论】:

  • 这不是 XML Schema 的用途。只有您可以修复 XML。
  • 那我就不需要使用架构了。 :) 但问题仍然存在,我如何自动修复 XML?
  • 似乎这个问题足以帮助stackoverflow.com/questions/2033154/…

标签: java xml xsd xml-parsing malformed


【解决方案1】:

当然,问题在于,对于任何不符合架构的实例,有无数个符合架构的“相似”实例,而您的挑战是选择一个在某种程度上“最相似”。

HTML5 试图通过一套精心设计的规则来做到这一点。这些规则包含大量特定模式的知识,例如,如果发现 tr 作为表的子项,则 tr 将包装在 tbody 中。您可以尝试为您的架构/词汇表做同样的事情,但要为大量工作做好准备。

对任意模式做同样的事情听起来像是一个有趣的博士项目。成功地做到这一点可能需要对偏离模式的原因进行一些研究(就像拼写更正应该考虑输入是由用户键入、通过语音识别获得还是使用 OCR 扫描获得——每个都引入了不同类型的错误。)

【讨论】:

    【解决方案2】:

    试试JTidy,它将修复格式错误的 XML 以及 HTML。

    【讨论】:

    • 我认为 JTidy 会修复格式正确的错误,但不会修复有效性错误。但我可能错了。
    猜你喜欢
    • 2015-06-19
    • 2012-03-24
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多