我需要验证具有给定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。用上面提到的常量替换它。 –