java - 在 Java 中使用 XML 模式修复 XML

标签 java xml xsd xml-parsing malformed

有谁知道有一种工具可以让我在 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、注意到缺少的标签并添加它的工具。就这个特定程序而言,除了缺少标签之外,我不需要任何更正。 (顺便说一句,无需使用模式即可定位和添加缺失标签的工具也很好)。
有什么建议么?

最佳答案

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

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

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

关于java - 在 Java 中使用 XML 模式修复 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8968701/

相关文章:

java - org.xml.sax.SAXParseException : cvc-complex-type. 2.4.c: 匹配的通配符是严格的

java - 使用 KSoap 从 Android 调用 webservice 只需返回 "error"字符串

java - 订购从 HashSet 创建的数组的最有效方法

android - 应用程序在低于 6 的 android 版本上崩溃但在 android 6 或 7 以上显示错误 android.view.InflateException :

xml - 如何在 XML 模式中声明只有属性的元素?

python - 使用三个 xml 模式作为 lxml 中的一个组合模式进行验证?

java - 如何获得 Double.toString() 行为和千位分隔符?

java - Eclipse 和 SVN 中的 Maven Multimodul 项目

java - 使用dom4j定位行号的节点

java - 使用java替换xml字符串中精确匹配的字符串