java - 根据 XSD 验证 XML 并丰富验证结果

标签 java xml validation xsd

我正在构建一个 java 工具来验证 xml 文档并构建包含输入数据和验证结果的 html 报告。 我认为可能的方法是:

  1. 使用 XSD 验证 XML
  2. 用验证结果丰富 XML
  3. 在最终的 HTML 报告中转换丰富的 XML(这一点不是问题的目的)

首先,这是一种有效的方法吗?或者有更合适的方法在java中完成这些事情?

如果这是一个可行的解决方案,我该如何实现第 2 步?

例如,如果我从这个输入文档开始:

<parent>
    <child id="a correct id" type="a correct type"/>
    <child id="an incorrect id" type="an incorrect type"/>
</parent>

如何生成这样的丰富输出文档:

<parent>

    <child id="a correct id" type="a correct type">
        <results>
            <result>id is correct</result>
            <result>type is correct</result>
        </results>
    </child>

    <child id="an incorrect id" type="an incorrect type">
        <results>
            <result>id is NOT correct</result>
            <result>type is NOT correct</result>
        </results>
    </child>

</parent>

最佳答案

首先,有很多方法可以解决这个问题。还有其他工具,例如 schematron提供用于描述验证结果的语言,以及将验证结果转换为漂亮的 HTML 的能力。有许多 java 包实际上执行模式验证,因此您尝试完成的大部分内容应该是“粘合代码”。确保您没有尝试在 Java 代码中进行架构验证。

接下来,我不确定您想要在验证后转换原始 XML 文件的要求是什么。通常您会将验证结果集转储为单独的文件。原始 XML 的架构是否允许您添加内容?

一般来说,如果您想要转换原始输入,可以通过编写一个 XSLT 程序来实现,该程序采用验证结果文件和原始源文件,然后使用这些验证结果转换原始文件。但我不建议这样做,因为我认为您的情况可能需要不改变原始文件的不同设计,除非您有更多要求想要更深入地了解。

另一个选择是直接的 DOM 操作。验证后,您可以load the DOM for the input document ,对其进行操作,然后将其写回到同一个原始文件中。

但说实话,在您采用第 2 步的任何方法之前,请确保您的需求确实需要它。

关于java - 根据 XSD 验证 XML 并丰富验证结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111029/

相关文章:

java - 使用 SAX 解析器解析 XML 数据并将其保存到 mysql localhost (JAVA) 的速度慢

.net - 如何将 "like"或 "Contains"参数传递给 ssrs 报告中的 fetchXML

xml - 从 Vantage Pro 2 气象站发布数据的数据格式是什么?

Jquery 验证插件 - 需要 2 个复选框

php - 人们如何通过我的联系表发送垃圾邮件

ruby-on-rails - 如何在无效提交后仅使用 ActiveModel 继承表单字段值?

java - 为什么 IntelliJ IDEA 给出异常建议?

java - Slf4j with Log4j 在wrapper exception有消息时不打印wrapped exception (caused by)

java - 以错误的编码读取属性文件中的属性

java - 在Java中使用xpath解析由多个xml文件组成的xml字符串