如果XML文件正确解组,JAXB可以说它是有效的吗? (因为我们正确地获得POJO对象)通过JAXB验证XML
2
A
回答
2
如果解组正常工作的XML是结构良好的,但如果你有一个模式,你可以添加一个XSD验证。
下面是一个Schema Validation的例子。
JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{Root.class});
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
//Source yourSchema.xsd
InputStream xsdStream = CopyMetaInfos.class.getClassLoader().getResourceAsStream(SCHEMA);
StreamSource xsdSource = new StreamSource(xsdStream);
Schema schema = schemaFactory.newSchema(new StreamSource[]{xsdSource});
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setSchema(schema);
Root root = (Root) unmarshaller.unmarshal(is);
如果XML遵循模式约束,则此验证将检查。
e.g(这个元素必须是0 < = X < = 10)
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
e.g(这个元素必须强制)
<xs:element name="child_name" type="xs:string" minOccurs="1"/>
+0
谢谢。所需要的只是一个格式良好的XML,但是根据我的项目需求,它是一个加号来验证它。 – 2014-10-05 07:31:43
1
在XML有效性(格式良好等)的意义上有效 - 是的。
从一定程度上符合某些XML Schema的有效性 - no。即使你使用XJC从这个模式中生成了你的类,答案是没有。即使JAXB解组没有错误,Int也可能在该模式中无效。
如果你想确保你的XML符合你的XML模式,你必须明确地验证它。这里有一个相关的问题:
+0
很好的答案。解决了我的疑问。 – 2014-10-05 07:33:13
相关问题
- 1. 通过xsd验证xml
- 2. JAXB ::解组期间对XML的验证
- 3. JAXB:请验证的XML结构到Java的JAXB
- 4. 验证XML通过XSD C#namesaces
- 5. 通过C#验证XML模式
- 6. JAXB验证错误
- 7. 通过Smack从JAXB发送XML xmpp api
- 8. 通过SSL验证
- 9. jQuery验证:通过
- 10. 通过Servlet验证
- 11. JAXB XML适配器通过注释工作,但不通过setAdapter
- 12. JAXB 2.0验证问题
- 13. 在Eclipse XML Editor中通过XSLT或Schematron进行XML验证?
- 14. jQuery $ .parseXML调用XML无效,但它通过XML验证器
- 15. 错误通过W3C验证验证HTML
- 16. 验证通过Oauth验证的用户
- 17. 如何使用XML模式来验证由JAXB编组的@ResponseBody
- 18. 是否可以使用JAXB 2.0验证编组的XML?
- 19. 使用JAXB和Stax验证编组XML文档
- 20. 在jaxb中使用xsd进行xml验证
- 21. XSD -xml正则表达式验证不使用JAXB
- 22. Spring JAXB - 使用模式验证解组XML文档
- 23. XML验证vs Java验证
- 24. textarea通过javascript验证
- 25. 通过验证提醒框
- 26. 通过验证获取lastIndex
- 27. 通过Python验证Firebase idToken
- 28. 验证不会通过Ajax
- 29. Rails 2:has_many:通过验证?
- 30. Yii2 - 通过IP验证AccessControl
你让我们知道如果多数民众赞成正常工作。 :) – Xstian 2014-10-03 15:13:48