我有XML作为字符串和XSD作为文件,我需要使用XSD验证XML。我怎样才能做到这一点?对xsd执行xml验证
5
A
回答
1
您可以使用javax.xml.validation的API这样的:
String xml = "<root/>"; // XML as String
File xsd = new File("schema.xsd"); // XSD as File
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(xsd);
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setSchema(schema);
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.parse(new InputSource(new StringReader(xml)));
9
可以使用的javax.xml.validation API来做到这一点。
public boolean validate(String inputXml, String schemaLocation)
throws SAXException, IOException {
// build the schema
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaFile = new File(schemaLocation);
Schema schema = factory.newSchema(schemaFile);
Validator validator = schema.newValidator();
// create a source from a string
Source source = new StreamSource(new StringReader(inputXml));
// check input
boolean isValid = true;
try {
validator.validate(source);
}
catch (SAXException e) {
System.err.println("Not valid");
isValid = false;
}
return isValid;
}
+0
适合我的用途 - 谢谢 – thonnor 2017-01-20 23:28:37
相关问题
- 1. 验证XML对XSD
- 2. 针对XSD的XML验证
- 3. 对XSD软件验证XML
- 4. XSD不针对xml进行验证
- 5. 对Java中的xsd进行XML验证
- 6. XML XSL XSD验证:
- 7. php-xml验证xsd
- 8. System.IO.DirectoryNotFoundException:针对XSD验证XML时
- 9. 使用Silverlight针对XSD验证XML?
- 10. XML不会验证对某些XSD
- 11. 使用C++验证xml针对xsd
- 12. 对XSD XML验证总是返回true
- 13. 在javascript/jquery验证XML对XSD
- 14. 使用JS/jQuery验证xml针对xsd
- 15. 验证xml请求对其xsd
- 16. 验证XML对XSD引用在C#中
- 17. iOS:使用XSD进行XML验证
- 18. 使用XSD架构进行Xml验证
- 19. 使用XSD进行XML模式验证
- 20. 使用XSD进行XML验证
- 21. 使用XSD进行XML验证
- 22. 验证java.util.Map对xsd
- 23. XML验证XSD问题
- 24. xml,xsd验证问题
- 25. xml验证没有xsd
- 26. XML架构验证(XSD)
- 27. 通过xsd验证xml
- 28. XSD文件验证个XML
- 29. 与XSD和xmlns = “验证XML”
- 30. 使用XML验证XSD
要么u需要一个XML文件中的字符串代替,比你可以验证与XSD的XML,有很多可用工具如JAXB 2.x中,Xrces等 – 2011-03-18 12:19:04