使用XML Schema校验XML文件的Java实现

5星 · 超过95%的资源 需积分: 24 79 下载量 48 浏览量 更新于2024-09-20 1 收藏 123KB PDF 举报
"Java通过XML Schema校验XML" XML校验是XML处理中非常常见的操作,如果没有有效的办法来校验XML的合法性,往往会导致很多问题。XML的校验是通过XMLSchema(XSD)或DTD文件的语法规范来校验的。DTD现在越来越不受欢迎了,在此选用XSD来校验。 Java校验XML是件很扯淡的事情,因为Sun的XML相关软件包会令你云里雾里。W3C这块的XML相关的规范相当的多,这也是导致XML处理器起来费劲的主要原因。要想精通这些规范和相关的API,实在是异想天开(新的规范在不停出,越来越多!)。 校验的原理是通过读取解析XML的时候设置校验的XSD和校验错误处理器,顺便校验的。在 Java 中,可以使用DOM4j结合javaxml api使用XSD来校验一个xml有效性。下面是一个使用DOM4j结合javaxml api使用XSD来校验xml有效性的示例代码: 首先,需要创建一个XSD文件,用于定义XML的结构和约束。例如: ```xml <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> ``` 然后,创建一个XML文件,用于测试校验。例如: ```xml <?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn file:///D:/_dev_stu/xsdtest/src/note.xsd"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting this weekend!</body> </note> ``` 最后,使用DOM4j结合javaxml api来校验XML文件的有效性。例如: ```java import org.dom4j.Document; import org.dom4j.io.SAXReader; import org.xml.sax.SAXException; public class XmlValidator { public static void main(String[] args) throws SAXException { SAXReader reader = new SAXReader(); Document document = reader.read("note.xml"); // 设置校验的XSD和校验错误处理器 document.setDocumentSource("note.xsd"); // 顺便校验的 document.validate(); } } ``` 在上面的示例代码中,我们使用DOM4j库来读取XML文件,并将其与XSD文件进行比较,以确保XML文件的有效性。如果XML文件无效,DOM4j将抛出异常。