如果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