使用XML Schema校验XML文件的Java实现
5星 · 超过95%的资源 需积分: 24 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将抛出异常。
2021-12-01 上传
2022-01-07 上传
2009-06-17 上传
2009-12-21 上传
2009-03-14 上传
2008-12-10 上传
2019-04-08 上传
王小狼
- 粉丝: 1
- 资源: 49
最新资源
- MessageBoard:一个用 Ember.js 编写的留言板应用
- abiramen.github.io
- SourceCodeViewer:网页原始码查看器
- 【精品推荐】智慧档案馆大数据智慧档案馆信息化解决方案汇总共5份.zip
- demandanalysis,java源码学习,java源码教学
- pybind11-initialsteps:一些可能对pybind11有用的示例程序
- cv-lin:网页简历原始码
- React-Codeial
- chan65chancleta20:Basi HTML页面
- GGOnItsOwnYo:带有 Yeoman 脚手架的 MEAN 堆栈
- 支持部署动态网站和静态网站
- Shopping,java源码之家,java授权系统
- scottzirkel:在https上找到的个人站点
- chan65chancleta19:Basi HTML页面
- Mihirvijdeshpande
- cure:Cure.js 是 JavaScript Polyfill 的集合,可帮助确保您的项目跨浏览器兼容