我需要驗證具有給定XSD文件的XML文件。我只需要該方法返回true,否則驗證正常或錯誤。根據XSD驗證XML
34
A
回答
59
返回簡單對或錯(您也不需要任何外部庫):
static boolean validateAgainstXSD(InputStream xml, InputStream xsd)
{
try
{
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(xsd));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));
return true;
}
catch(Exception ex)
{
return false;
}
}
3
public boolean validate() {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
factory.setAttribute(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
factory.setAttribute(
"http://java.sun.com/xml/jaxp/properties/schemaSource",
"http://domain.com/mynamespace/mySchema.xsd");
Document doc = null;
try {
DocumentBuilder parser = factory.newDocumentBuilder();
doc = parser.parse("data.xml");
return true;
} catch (Exception e) {
return false;
}
}
3
2
XMLUnit有一些不錯的班級要做到這一點,有一個例子,他們的README文件:
Validator v = Validator.forLanguage(Languages.W3C_XML_SCHEMA_NS_URI);
v.setSchemaSources(Input.fromFile("local.xsd").build());
ValidationResult result = v.validateInstance(new StreamSource(new File("local.xml")));
return result.isValid();
相關問題
- 1. 根據XSD驗證XML
- 2. 麻煩根據XSD驗證XML(java)
- 3. 使用Notepad ++根據XSD驗證XML
- 4. 根據XML驗證多個XSD
- 5. Grails根據xsd驗證xml文檔1.1
- 6. XML XSD驗證
- 7. 驗證XML對XSD
- 8. XML XSL XSD驗證:
- 9. php-xml驗證xsd
- 10. 根據XSD模式驗證BaseX XML數據庫
- 11. XML - XSD驗證錯誤:可用於驗證的根
- 12. SUDS能否根據XSD驗證對象?
- 13. 如何根據2個XSD驗證1個XML文件?
- 14. 根據XSD驗證XML的問題 - PHP/schemaValidate
- 15. 使用JDOM 2.0根據XSD模式驗證XML文件
- 16. java.net.ConnectException:根據XSD驗證Xml:本地機器
- 17. 根據XSD驗證XML時忽略元素順序
- 18. 如何根據多個XSD文件驗證XML?
- 19. 如何根據PostgreSQL中的XSD驗證XML變量
- 20. 如何使用PowerShell根據XSD驗證XML文件?
- 21. 如何使用xmlschemaset和xmlreader.create根據xsd模式驗證xml
- 22. 根據特定的XSD模式驗證XML
- 23. 如何根據XSD文件驗證XML字符串?
- 24. 根據Java中的XSD驗證XML /獲取模式位置
- 25. 如何根據xsd驗證xml並獲取* ALL *錯誤?
- 26. 如何根據使用JDom的XSD模式驗證XML文檔
- 27. 根據XSD驗證XML並忽略子元素的順序
- 28. 要根據多個xsd模式進行驗證的XML
- 29. 根據XSD模式驗證XML並使用groovy捕獲驗證器期望
- 30. 使用XSD驗證XML數據
不應該只將**用於可執行的情況,**不可用於**的控制流?如果執行'測試',我不會認爲它是可選的。它可以通過,或失敗。兩個選項必須考慮。也看看http://stackoverflow.com/questions/15732/whats-the-best-way-to-validate-an-xml-file-against-an-xsd-file – mike
此代碼不工作時要驗證的文件包含DOCTYPE聲明,如果有人知道爲什麼? – HugoPoi
如果有人得到錯誤「沒有SchemaFactory tha實現[...]」,這可能是因爲你做了和我一樣的錯誤,它使用常量XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI。用上面提到的常量替換它。 –