是否可以在解组XML的同时报告重复节点而不根据XML模式验证它?假设XML看起来像这样:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<th>test0</th>
<th>test1</th>
<th>test2</th>
<tr>
<td class="sub1">1</td>
<td class="sub2">2</td>
<td class="sub3">0</td>
</tr>
<tr>
<td class="sub1">3</td>
<td class="sub2">4</td>
<td class="sub3">0</td>
</tr>
<tr>
<td class="sub1">5</td>
<td class="sub2">6</td>
<td class="sub3">0</td>
</tr>
</tbody>
</table>
这里是java类(省略注释):
<?xml version="1.0" encoding="UTF-8"?>
<user xmlns=...>
<firstName>Peter</firstName>
<lastName>Smith</lastName>
<firstName>Eric</firstName>
</user>
上述XML成功解组到具有public class User {
protected String firstName;
protected String lastName;
.... [getters and setters here]
}
和firstName=Eric
的User对象中。相反,我希望它失败并报告重复元素lastName=Smith
的存在。
我们不对XSD使用验证,因为我们同时支持XML和JSON,因此选择对包含在JAXB bean(生成的java类)中的注释使用Bean Validation。哪个效果很好,但显然无法解决所描述的问题。