日期:2014-05-20 浏览次数:20786 次
/**
* validateXML
* @param xsdPath 传入验证文件
* @param xmlData 传入验证内容
* @return
*/
public static boolean validateXML(String xsdPath,String xmlData){
// 建立schema工厂
SchemaFactory schemaFactory = SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema");
// 建立验证文档文件对象,利用此文件对象所封装的文件进行schema验证
File schemaFile = new File(xsdPath);
// 利用schema工厂,接收验证文档文件对象生成Schema对象
Schema schema = null;
try {
schema = schemaFactory.newSchema(schemaFile);
} catch (SAXException e) {
e.printStackTrace();
}
// 通过Schema产生针对于此Schema的验证器,利用schenaFile进行验证
Validator validator = schema.newValidator();
// 得到验证的数据源
Source source = new StreamSource(String2InputStream(xmlData));
// 开始验证,成功输出success!!!,失败输出fail
// 参数还可以用文件的String转为的inputstreamnew
// //ByteArrayInputStream(text.getBytes("UTF-8"));
try {
validator.validate(source);
}catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
return false;
}
return true;
}
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="List" type="ListType"/>
<xs:complexType name="ListType">
<xs:sequence>
<xs:element type="DomainType" name="Domain"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DomainType">
<xs:sequence>
<xs:element type="xs:int" name="aac001"/>
<xs:element type="xs:long" name="aac002"/>
<xs:element type="xs:string" name="aac003"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<List>
<Domain xsi:type="person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<aac001>3001415722</aac001>
<aac002>54xxx965070xx20</aac002>
<aac003>我靠靠</aac003>
</Domain>
</List>