Java XML验证单个元素

Java XML验证单个元素,java,xml,validation,Java,Xml,Validation,我有以下XML文件 <books> <book> <author>Fitzek</author> <titel>Abgeschnitten</titel> </book> <book> <author>Dan Brown</author> <titel>Symbol</titel>

我有以下XML文件

<books> 
   <book>
      <author>Fitzek</author>
      <titel>Abgeschnitten</titel>
   </book>
   <book>
      <author>Dan Brown</author>
      <titel>Symbol</titel>
    </book>
    <book isbn="123456">
      <author>Sebastian Fitzek</author>
      <titel>Der Augensammler</titel>
    </book>
</books>

菲策克
阿伯格什尼顿
丹布朗
象征
塞巴斯蒂安·菲泽克
德奥根萨姆勒
我现在在JSF页面上显示了这个XML文件。我的目的是用XSD文件中的正确元素验证每个元素,如果特定元素无效,则向页面显示信息或错误消息。
我只找到了一个验证整个文件而不是特定元素的解决方案

我希望有人能帮助我。

非常感谢。

至少可以说,XML解析器和验证器在您需要的意义上并不健壮。在我有限的经验中,他们会在第一个问题上失败,如果他们试图恢复,错误会层叠成倍

问题在于,您需要从XML文件中获取健壮的信息,并从验证器中获取健壮的信息。您的假设是XML文件格式良好(语法正确),并且它不是分段有效的(有一些元素无法根据模式进行验证)。不幸的是,这不是大多数人想象的用例

这里有一个蛮力的方法来处理这个问题。首先,创建一组元素模式,每个元素对应一个要显示和更正的数据元素。每个模式将只包含一个标记和所需的数据

  • 验证XML文件。如果没有错误,您可以简单地显示结果
  • 在没有验证的情况下将XML文件读入DOM。这将生成一个包含数据的树
  • 在DOM中查找元素
    author
    titel
    (sp)。对于每个元素,创建一个只有一个标记和数据元素的小XML文件。根据预先创建的元素架构验证该元素

  • 现在,您有了一个数据元素列表,其中包含与每个数据字段正确关联的可选验证消息。

    我想知道,完整文档验证为什么不符合您的要求?[参见此处][1]已经解释过了。[或者你也可以使用它][2][1]:[2]:我想显示哪些元素未验证,并在页面上显示文本字段以更正错误的值。如果我检查完整文档,我可以说“文件有效”或“文件无效”。但这无助于你的解决方案。我不知道这是不是最好的解决办法。我的示例非常小且简单,但XML文件可能非常大。我会/必须考虑那件事