使用XML Schema校验XML文件的Java实现
5星 · 超过95%的资源 需积分: 24 110 浏览量
更新于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将抛出异常。
2022-01-07 上传
2021-12-01 上传
2009-06-17 上传
2009-12-21 上传
2009-03-14 上传
2008-12-10 上传
2019-04-08 上传
王小狼
- 粉丝: 1
- 资源: 49
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章