XML验证单个元素

时间:2013-12-03 12:46:30

标签: java xml validation

我有以下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-File。我的目的是使用XSD文件中的正确元素验证每个元素,如果特定元素无效,则向页面显示信息或错误消息。
我只找到了验证整个文件而不是特定元素的解决方案。

我希望有人可以帮助我 非常感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

  1. 验证XML文件。如果没有错误,您只需显示结果即可。
  2. 将XML文件读入DOM而不进行验证。这为树提供了数据。
  3. 遍历DOM,寻找元素authortitel(sp)。对于每个元素,创建一个微小的XML文件,其中只包含一个标记和数据元素。根据您事先创建的元素模式验证该元素。
  4. 现在,您有一个数据元素列表,其中包含与每个数据字段正确关联的可选验证消息。