编写Java程序使用XSD校验XML文档
来源:互联网 发布:mac怎么删除桌面文件 编辑:程序博客网 时间:2024/05/21 22:22
本文介绍如何通过编写Java程序来使用XSD(XML Schema Definition)文档来校验XML(EXtensible Markup Language)文档。
如果还不熟悉XML或者XSD,可以到W3Cschool网站进行学习。
现有book.xml和book.xsd,通过编写Java程序来使用book.xsd去校验book.xml。
book.xml:
<?xml version="1.0" encoding="UTF-8"?><booklist xmlns="http://www.rcnjtech.com/book" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.rcnjtech.com/book book.xsd"> <book> <name>Java</name> <author>Tom</author> <number>20</number> <id>123456789012345678</id> </book> <book> <name>C</name> <author>Jack</author> <number>51</number> <id>987654321012345678</id> </book></booklist>
book.xsd:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.rcnjtech.com/book" xmlns="http://www.rcnjtech.com/book" elementFormDefault="qualified"> <xsd:element name="booklist" type="BOOKLIST"/> <xsd:complexType name="BOOKLIST"> <xsd:sequence> <xsd:element name="book" type="BOOK" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BOOK"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="number" type="xsd:positiveInteger"/> <xsd:element name="id" type="ID"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ID"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{18}"/> </xsd:restriction> </xsd:simpleType></xsd:schema>
ValidateXmlWithXsd.java:
import javax.xml.XMLConstants;import javax.xml.transform.stream.StreamSource;import javax.xml.validation.Schema;import javax.xml.validation.SchemaFactory;import javax.xml.validation.Validator;/** * 使用XSD校验XML * * @author RCNJTECH * @date 2017/12/3 */public class ValidateXmlWithXsd { /** * 校验方法 * * @param xmlFilePath XML文件路径 * @param xsdFilePath XSD文件路径 */ public static void validate(String xmlFilePath, String xsdFilePath) { try { // 创建SchemaFactory实例 SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); // 通过向SchemaFactory实例传入XSD文件流创建Schema Schema schema = schemaFactory.newSchema(new StreamSource(xsdFilePath)); // 通过Schema实例构造校验器 Validator validator = schema.newValidator(); // 向validate()传入XML文件流 validator.validate(new StreamSource(xmlFilePath)); System.out.println("Validate Successfully!"); } catch (Exception e) { e.printStackTrace(); System.out.println("Validate Unsuccessfully!"); } } /** * main()进行测试 * * @param args null */ public static void main(String[] args) { String xmlFilePath = "D:\\IdeaProjects\\XML\\src\\book.xml"; String xsdFilePath = "D:\\IdeaProjects\\XML\\src\\book.xsd"; ValidateXmlWithXsd.validate(xmlFilePath, xsdFilePath); }}
运行程序后,毫无疑问地将通过验证,即:
Validate Successfully!
在book.xml文档中,若将标签book的子标签number的值改成负数,即如:
<book> <name>Java</name> <author>Tom</author> <number>-20</number> <id>123456789012345678</id></book>
运行后将有如下异常:
Validate Unsuccessfully!org.xml.sax.SAXParseException; systemId: file:///D:/IdeaProjects/XML/src/book.xml; lineNumber: 8; columnNumber: 29; cvc-minInclusive-valid: 对于类型为 'positiveInteger' 的 minInclusive '1', 值 '-20' 不具有面有效性。 at com.rcnjtech.service.ValidateXmlWithXsd.validate(ValidateXmlWithXsd.java:32) at com.rcnjtech.service.ValidateXmlWithXsd.main(ValidateXmlWithXsd.java:48)
阅读全文
0 0
- 编写Java程序使用XSD校验XML文档
- java 使用xsd文件 校验 xml文件
- java使用xsd校验xml样例
- 使用xerces-c++库编写XSD校验XML的类
- XSD校验XML JAVA实现
- JBPM流程部署校验之java利用XSD校验XML
- XSD校验XML
- 通过xsd校验xml文件
- xsd去校验xml例子
- 利用xsd校验xml文件格式
- xsd文件校验xml内容
- java中使用xsd验证xml
- VB Script 如何使用XSD验证XML文档格式
- java xsd 校验工具类
- Java&Xml教程(九)Java中通过XSD校验XML合法性
- 根据xsd生成xml文档
- 根据xsd生成xml文档
- 使用xsd验证xml
- 开发中Base64编码运用
- 浏览论文记录
- JSP中介绍什么是静态网页与动态网页,以及在什么情况下编写动态网页
- STM32 GPIO模式总结
- 安装gluon
- 编写Java程序使用XSD校验XML文档
- CSS3选择器(全)
- 【Linux学习】 Redis常用的一些指令
- 第一篇:概述 -- 1.大型网站架构演化笔记
- 视频 | BIM数据中心模型
- 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现
- VIP的漂移
- 大型分布式网站架构设计与实践 第一章
- 快速排序算法的实现