java使用xsd校验xml样例
知识点:
XSD文件是指XML结构定义 ( XML Schemas Definition )文件,是DTD的替代品。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求
XML Schema的优点:
1) XML Schema基于XML,没有专门的语法
2) XML可以象其他XML文件一样解析和处理
3) XML Schema支持一系列的数据类型(int、float、Boolean、date等)
4) XML Schema提供可扩充的数据模型。
5) XML Schema支持综合命名空间
6) XML Schema支持属性组。
可以使用Altova XMLSpy软件打开查看消息体的定义情况,使用:DTD/模式---产生样品XML文件夹,生成样例消息体
例子:
校验工具类方法:
ValidateXML.java
package com.xml.util;
import java.io.File;
import java.io.IOException;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
/**
* 校验xml工具类
*/
public class ValidateXML {
private ValidateXML() {
}
public static boolean validateXml(String xsdPath, String xmlPath)
throws SAXException, IOException {
// 建立schema工厂
SchemaFactory schemaFactory = SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema");
// 建立验证文档文件对象,利用此文件对象所封装的文件进行schema验证
File schemaFile = new File(xsdPath);
// 利用schema工厂,接收验证文档文件对象生成Schema对象
Schema schema = schemaFactory.newSchema(schemaFile);
// 通过Schema产生针对于此Schema的验证器,利用schenaFile进行验证
Validator validator = schema.newValidator();
// 得到验证的数据源
Source source = new StreamSource(xmlPath);
// 开始验证,成功输出success!!!,失败输出fail
validator.validate(source);
return true;
}
}
测试类:
TestMain.java
package com.xml.test;
import java.io.IOException;
import org.xml.sax.SAXException;
import com.xml.util.ValidateXML;
public class TestMain {
/**
* @param args
* @throws Exception
* @throws SAXException
*/
public static void main(String[] args) {
String xsdPath = "D:\\test\\TRequest.xsd";
String xmlPath = "D:\\test\\Request.xml";
try {
if (ValidateXML.validateXml(xsdPath, xmlPath)) {
System.out.println("校验通过");
}
} catch (SAXException e) {
System.out.println("校验失败");
e.printStackTrace();
} catch (IOException e) {
System.out.println("校验失败");
e.printStackTrace();
}
}
}
java使用xsd校验xml样例的更多相关文章
- Java - 使用 XSD 校验 XML
package com.huey.dream.utils; import java.io.IOException; import java.io.InputStream; import javax.x ...
- Java&Xml教程(九)Java中通过XSD校验XML合法性
Java XML校验API能够通过XSD(XML Schema Definition)校验XML文件内容的合法性.在下面的案例中使用javax.xml.validation.Validator 类通过 ...
- Java&Xml教程(九)Java中通过XSD校验XML合法性
Java XML校验API可以通过XSD(XML Schema Definition)校验XML文件内容的合法性. 在以下的案例中使用javax.xml.validation.Validator 类通 ...
- Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) -- 样例(6)
managed-schema 样例: <?xml version="1.0" encoding="UTF-8" ?> <!-- License ...
- C# XSD校验XML文件的代码
/// <summary> /// XSD文件校验XML /// </summary> /// <returns></returns> public A ...
- java 状态模式 解说演示样例代码
package org.rui.pattern; import junit.framework.*; /** * 为了使同一个方法调用能够产生不同的行为,State 模式在代理(surrogate)的 ...
- java 8 date time 简单样例
参考 Java 8 Time Api 使用指南-珍藏限量版 Java 8 中处理日期和时间示例 部分样例 import java.time.temporal.TemporalAdjusters; im ...
- maven的pom.xml样例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- pom.xml 样例
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven ...
随机推荐
- OVM-V1.2 版发布,新增实时监控、支持一键升级
OVM是国内首款.完全免费.企业级--混合虚拟化管理平台,OVM是从中小企业目前的困境得到启发,完全基于国内企业特点开发,更多的关注国内中小企业用户的产品需求. OVM-V1.2 该版本功能变动如下: ...
- layoutSubviews总结
ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ——————- - (void)layoutSubview ...
- golang flag包简单例子
package main import ( "flag" "fmt" ) var workers int; func main() { flag.IntVar( ...
- Qt开发环境中使用报表控件FastReport遇到的一些问题(一)
FastReport是一款优秀的报表控件,由俄罗斯开发,国内有代理商.Qt环境下可实现报表功能的还有一款叫NCReport,也是收费控件,比较来比较去还是觉得前者功能强点.网上讲解此控件在Qt中使用的 ...
- Android 中pid与uid的作用与区别
PID:为Process Identifier, PID就是各进程的身份标识. 程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在 ...
- PHP 调用Python脚本
上次做用户反馈自动翻译,写了个python脚本,将日文的用户反馈翻译成中文,效果虽然可以,但其它不懂python的童鞋就没法使用了,所以搭了个web服务,让其他人可以通过网页访问查询.使用的是apac ...
- crontab不能正确执行的问题
近期在部署crontab任务的时候,总是遇到在shell中单独执行正常,但是放到crontab定时执行出错的问题.若出现这类场景,九成就是环境变量的问题. 因为我的定制任务,基本上都需要使用sqlpl ...
- C++概念整理
/* 面向对象: 多态, 继承 封装 */ #include <stdio.h> #include <stdlib.h> //一旦有了纯虚函数,该对象就不能实例化了. #def ...
- codeforces195a
link:http://codeforces.com/problemset/problem/336/A 很简单的一道题目,当初有个单词不认识,isosceles原来意思是等腰的o(╯□╰)o #inc ...
- Linux字符界面的优势
优势一:字符界面占用的系统资源更少,更加适合服务器 优势二:字符界面减少了出错.被攻击的可能性(一.二决定了服务器一般不装图形界面,安全稳定优先)