1. 首先要导入包,axiom包请到apache上下载

2. xsd和xml 文件放在工程 bin路径下即可。

package xmlValidate;

import java.io.ByteArrayInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import javax.xml.XMLConstants;

import javax.xml.stream.FactoryConfigurationError;

import javax.xml.stream.XMLInputFactory;

import javax.xml.stream.XMLStreamException;

import javax.xml.stream.XMLStreamReader;

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.apache.axiom.om.OMElement;

import org.apache.axiom.om.impl.builder.StAXOMBuilder;

import org.xml.sax.SAXException;

public class SchemaValidate {

/**

* Validate the XML file with XML Schema file

*

* XSD和XML文件放在工程的bin路径下

* @throws SAXException

* @throws IOException

*/

public static boolean validate(String schemaLocaltion, OMElement request)

throws SAXException, IOException

{

//获取Schema工厂类

//这里的XMLConstants.W3C_XML_SCHEMA_NS_URI的值就是://http://www.w3.org/2001/XMLSchema

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// Schema实例

Schema schema = null;

//获取XSD文件,以流的方式读取到Source中

//XSD文件的位置相对于类文件位置

Source schemaSource = new StreamSource(SchemaValidate.class.getResourceAsStream(schemaLocaltion));

//实例化Schema对象

schema = factory.newSchema(schemaSource);

//这里是将一个DOM树对象转换成流对象,以便对DOM树对象验证

//如果是对XML文件进行验证,用FileInputStream即可

String input = request.toString();

ByteArrayInputStream bais = new ByteArrayInputStream(input.getBytes("UTF-8"));

// 获取验证器,验证器的XML Schema源就是之前创建的Schema

Validator validator = schema.newValidator();

Source source = new StreamSource(bais);

// 执行验证

try

{

validator.validate(source);

return true;

}

catch(Exception ex)

{

return false;

}

}

/**

* get OMElement soap request from specified XML file.

*

* @param request

* @return

* @throws FileNotFoundException

* @throws XMLStreamException

* @throws FactoryConfigurationError

*/

public static OMElement getRequest(String filePath)

throws FileNotFoundException, XMLStreamException,

FactoryConfigurationError {

XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(SchemaValidate.class.getResourceAsStream(filePath));

StAXOMBuilder builder = new StAXOMBuilder(reader);

OMElement requestMessage = builder.getDocumentElement();

return requestMessage;

}

public static void main(String[] args) //throws SAXException, IOException,

//XMLStreamException, FactoryConfigurationError

{

try

{

//            if(validate("/customer.xsd", getRequest("/customer.xml")))

//            {

//                System.out.println("customer.xml格式良好");

//            }else

//            {

//                System.out.println("customer.xml格式有误,请检查!");

//            }

if(validate("/customer.xsd", getRequest("/customer_err.xml")))

{

System.out.println("customer_err.xml格式良好");

}else

{

System.out.println("customer_err.xml格式有误,请检查!");

}

}

catch(Exception ex)

{

System.out.println("文件格式有误,请检查!");

}

}

}

java xsd校验,java中使用xsd验证xml | 学步园相关推荐

  1. java printwriter用法_Java中printwriter类的用法 | 学步园

    printwriter类: java.io 类 PrintWriter java.lang.Object java.io.Writer java.io.PrintWriter 所有已实现的接口: Cl ...

  2. java正则校验企业中征码

    延续上一篇,此则文为java版本校验企业中征码. 校验规则在上一篇中已经提过.所以话不多说,直接上代码. //校验中征码public static boolean checkZZM(String va ...

  3. java 护照校验,Java应用中的数据校验

    翻译:叩丁狼教育吴嘉俊 [译者注:这篇文章是开源项目CUBA Platform的作者,在这篇文章中,作者阐述了CUBA平台中关于数据校验的设计思想和使用方式,可以作为大家在设计数据校验方面一个比较好的 ...

  4. java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园

    在使用Java开发时,经常会遇到调用SqlServer存储过程的问题.下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现? Java调用SqlServer存储过程怎么实现 1.数据库 ...

  5. java转json数组对象_java对象转json、json数组 、xml | 学步园

    JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean. 下载地址:http://json-lib.sourceforge.net ...

  6. java 求e_Java求自然对数底e的值 | 学步园

    编写一个java程序jse.java,按下面的公式计算自然对数底e的值(n的值取20): e=1+ 1/1!+1/2!+1/3!+1/4!+-1/n! 直接看代码吧.2个方法,第一个很好理解,第二个我 ...

  7. servlet文件上传blob_servlet实现从oracle数据库的blob字段中读出文件并显示 | 学步园...

    /* * ReadFile.java * * Created on 2004年11月17日, 下午3:41 */ package jgwl.app; import java.io.*; import ...

  8. oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园

    oracle中exp和imp是什么,oracle中exp和imp有何区别.exp和imp的输入都是名字和值对:exp parameter_name=value 或exp parameter_name= ...

  9. java 加载 xsd文件_Spring中自定义xsd文件操作方式

    1 设置html文件的语法格式xsd文件 根据POJO的属性编写xsd文件. 例如 targetNamespace="http://www.zhangyh.com/schema/user&q ...

最新文章

  1. 编程上标和下标使用方法
  2. Linux海量数据高并发实时同步架构方案杂谈
  3. zookeeper 入门讲解实例 转
  4. ffplay源码(版本:ffmpeg-4.2.1)
  5. Linux环境_源码安装LibreOffice实现文件在线预览doc,doxc,xls,xlsx,ppt,pptx 文件
  6. sd省队集训d1t1
  7. 关于Oracle默认用户名system密码不正确登录不上解决方案
  8. Illustrator 教程,如何在 Illustrator 中创建和编辑图层?
  9. js base64编码_使用psd.js将PSD转成SVG -- 基础篇(文字amp;图片)
  10. java毕业设计成品基于SSM+Bootstrap+MYSQL演唱会网上订票系统
  11. 使用VM12虚拟机安装CentOS7
  12. 基于51单片机的DHT11传感器
  13. ssm医院挂号就诊预约系统毕业设计源码250853
  14. 判断手机号所属运营商--课后程序(Python程序开发案例教程-黑马程序员编著-第11章-课后作业)
  15. 网站容器化升级---各模块分别运行一个容器
  16. 华宇(大连)笔试-20190620
  17. 如何破解软件狗,dongle
  18. 简单的Dos命令/一行代码实现恶意程序
  19. IDEA中编写Python代码
  20. elementui 表格的简单封装

热门文章

  1. 织梦 dede TAG 标签调用 大全
  2. Linux mkdir 创建文件夹
  3. 计算机主机不启动的原因,电脑开不了机怎么办 电脑不能开机的原因与解决办法 (全文)...
  4. python:bdb --- 调试器框架
  5. jQuery实现返回顶部
  6. asp计算机等级考试系统源码,ASP在线考试系统 - WEB源码|源代码 - 源码中国
  7. Microsoft Excel 文件未完全加载
  8. 新东方在线旗下东方优播决定关闭,CEO朱宇拟赴山区支教
  9. text-align:center设置居中不起作用,text-align、margin: auto区别
  10. 心理测评系统选购攻略