现在基于webservice的接口越来越多,xml格式成为最通用的传输格式,以下代码是通过Schema验证xml格式的示例:
一、XmlValidator工具类
package com.starit.comm.xml;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
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;
/**
* @author wpan 2010-09-12 验证xml是否符合格式
*
*/
public class XmlValidator {
public final static String SCHEMA_LANGUAGE = "http://www.w3.org/2001/XMLSchema";
/**
* @param xmlStr
* @param xsdStr
* @return XmlValidateResult 通过Schema验证指定的xml字符串是否符合结构
*/
public static XmlValidateResult validateByXsd(String xmlStr, String xsdStr) {
// 查找支持指定模式语言的 SchemaFactory 的实现并返回它
SchemaFactory factory = SchemaFactory
.newInstance(XmlValidator.SCHEMA_LANGUAGE);
// 包装待验证的xml字符串为Reader
Reader xmlReader = new BufferedReader(new StringReader(xmlStr));
// 保障Schema xsd字符串为Reader
Reader xsdReader = new BufferedReader(new StringReader(xsdStr));
// 创建返回值类,默认为失败
XmlValidateResult vs = new XmlValidateResult();
try {
// 构造Schema Source
Source xsdSource = new StreamSource(xsdReader);
// 解析作为模式的指定源并以模式形式返回它
Schema schema = factory.newSchema(xsdSource);
// 根据Schema检查xml文档的处理器,创建此 Schema 的新 Validator
Validator validator = schema.newValidator();
// 构造待验证xml Source
Source xmlSource = new StreamSource(xmlReader);
// 执行验证
validator.validate(xmlSource);
// 设置验证通过
vs.setValidated(true);
return vs;
} catch (SAXException ex) {
// 设置验证失败
vs.setValidated(false);
// 设置验证失败信息
vs.setErrorMsg(ex.getMessage());
return vs;
} catch (IOException e) {
// 设置验证失败
vs.setValidated(false);
// 设置验证失败信息
vs.setErrorMsg(e.getMessage());
return vs;
}
}
/**
* @param args0
* @throws IOException
*/
public static void main(String[] args0) throws IOException {
File xml = new File("D:/order.xml");
File xsd = new File("D:/order.xsd");
BufferedReader xmlBuff = new BufferedReader(new FileReader(xml));
BufferedReader xsdBuff = new BufferedReader(new FileReader(xsd));
StringBuffer xmlStr = new StringBuffer();
String line = null;
while ((line = xmlBuff.readLine()) != null) {
xmlStr.append(line);
xmlStr.append("\n");
}
xmlBuff.close();
StringBuffer xsdStr = new StringBuffer();
line = null;
while ((line = xsdBuff.readLine()) != null) {
xsdStr.append(line);
}
xsdBuff.close();
XmlValidateResult vs = XmlValidator.validateByXsd(xmlStr.toString(),
xsdStr.toString());
if (vs.isValidated()) {
System.out.println("验证成功!");
} else {
System.out.println("验证失败!");
System.out.println("失败原因:" + vs.getErrorMsg());
System.out.println("验证xml:\n" + xmlStr.toString());
}
}
}
二、验证结果类:
package com.starit.comm.xml;
/**
* @author wpan Xml验证结果
*/
public class XmlValidateResult {
// 是否通过验证
private boolean validated;
// 错误信息
private String errorMsg;
// 构造函数,默认为不通过,错误原因为空字符串
XmlValidateResult() {
validated = false;
errorMsg = "";
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public boolean isValidated() {
return validated;
}
public void setValidated(boolean validated) {
this.validated = validated;
}
}
说明:其中xml和xsd均是通过字符串作为参数,可以改造为适合自己场景的格式。
分享到:
相关推荐
ava校验XML是件很扯淡的事情,... 下面不扯这些废话了,我用DOM4j结合javaxml api使用XSD来校验一个xml有效性,下面这个例子虽然和蹩脚,但是也费了一番功夫,放出来大家研究吧,有更好的实现也希望能和我一同分享。
java中实现xmlschema验证文件借鉴.pdf
java中实现xmlschema验证文件参照.pdf
xerces-c++ 2.8应用,主要报错xml文件的解析,创建,修改保存。schema验证的。希望对初学者有所帮助.
在知识的讲解上,《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书...
基于Java的XML解析与反射设计模式 摘要:随着计算机时代的蓬勃发展,internet的普及给社会以及人民的生活带来了巨 大的影响。与此同时,b/s结构的多系统相互访问技术应时代的发展也如雨后春笋般不断 涌现出来,相应...
The Schematron is a simple and powerful Structural Schema Language for making assertions about patterns found in XML documents. It relies almost entirely on XPath query patterns for defining rules and...
解析和验证XML文档, 执行XSL转换 使用来自XML源的JPA填充数据库。 要求 JDK 1.8 Java项目管理工具maven ,(我使用版本3.5.2): 软件版本控制:git 可选,对于CarRental示例:Postgres 安装 转到您的软件项目所在...
它基本上按顺序执行以下操作: 识别实际的xml格式验证xml文件(使用架构和schematron规则) 生成定制报告/从xml文件提取定制数据计算接受状态(根据提供的方案和规则) 验证器取决于用于完全配置过程的自定义。...
图形的XML编辑和基于文本的XML编辑视图 模式感知的XQuery XQuery编辑器,调试器和XQuery的分析器 革命性的智能修复XML验证自动纠错 XPath的自动完成和XPath分析器窗口 可视化的XML Schema编辑器 数据库集成 ...
图形的XML编辑和基于文本的XML编辑视图 模式感知的XQuery XQuery编辑器,调试器和XQuery的分析器 革命性的智能修复XML验证自动纠错 XPath的自动完成和XPath分析器窗口 可视化的XML Schema编辑器 数据库集成 ...
格式不正确的XML的命令行避难所(CRUX) 对具有Java运行时的任何平台的XML模式和Schematron...使用范例针对本地XML文件执行XML模式验证: crux.jar file.xml针对本地XML文件执行XML Schema验证和Schematron验证: cru
XSD验证器 根据XML模式(xsd文件)快速轻松地验证XML文件。 需要安装Java。 在Mac和Linux上的用法: ./xsdv.sh test.xsd test.xml ... 注意,该项目只是用于XML Schema验证的标准Java库例程的简单包装。
XML知识的详细验证,包括测试所用的JAVA源码等,XML,schema,DTD,Xpath等
4.4 用Schema验证XML文档 35 4.4.1 使用XML Schema 35 4.4.2 Schema的语法 37 4.5 用JAXP读写XML 44 4.6 Java EE中的JAXB 55 4.7 小结 64 第5章 使用Java Servlet开发动态网页 65 5.1 Servlet的概念和...
本书包括以下内容: 学习核心Java语言——基本语法、类和对象以及其他的组件; 用Java进行开发,使用编译器、解释器和其他工具; 介绍Java内建的线程工具和...使用XML和XSLT,包括XML Schema、验证、XPath和XInclude。
XSD推理器XSDInferencer 是一个自动 XML Schema 生成工具,它自动生成 XSD 文件,一些提供的 XML 正面示例可以根据这些文件进行验证。 它还从该文档的内容中收集统计信息。 通过利用许多常用的 XSD 功能,该工具生成...
JAXB (Java Architecture for XML Binding) 的主要功能是根据DTD或者XML Schema将XML Element转化为Java类。将XML文本流转化为Java ...简单的来说,它可以让你轻松解析和验证XML内容而不用去写那些繁琐的XML解析代码。
在后台,该实用程序使用Java进行实际验证。 它假定javac和java在路径上。 如果存在JAVA_HOME环境变量,它将使用它来定位已安装的JDK。 在某些平台上,例如您需要手动定义JAVA_HOME 。 安装 通过安装软件包: npm ...