- 浏览: 246864 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (232)
- 瞎扯两句 (8)
- 操作系统 (5)
- 工作笔记 (33)
- 设计模式 (1)
- java (57)
- Java IDE (7)
- hibernate (17)
- oracle (46)
- ms sql (2)
- spring (9)
- struts2 (0)
- javascript (16)
- java_code (2)
- java之集合 (2)
- java之线程 (4)
- java之IO (4)
- java之虚拟机 (6)
- java之异常 (0)
- EJB (4)
- XML (4)
- 数据结构-算法 (2)
- 架构设计 (5)
- 配置信息 (2)
- 阅读笔记 (6)
- IT专业英语 (1)
- PI (0)
- 单元测试 (1)
最新评论
根据自己理解写的。
写完之后发现有注释更为详细的,地址为http://blog.csdn.net/fenglibing/article/details/4150642
利用XMLReader的parse方法来validate。
需要设定XMLReader的ContentHandler(内容处理器)
ContentHandler采用sun的msv方式
简化流程为:
得到XMLReader实例
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setNamespaceAware(true);
XMLReader reader = parserFactory.newSAXParser().getXMLReader();
得到校验者verifier
VerifierFactory factory = new com.sun.msv.verifier.jarv.TheFactoryImpl();
Verifier verifier = factory.newVerifier(fileSchema);
设定reader的内容处理器ContentHandler
reader.setContentHandler(verifier.getVerifierHandler());
解析xml
reader.parse(new InputSource(new StringReader(xmlSource)));
以下为源码。
package com.bull.iris.portal.common;
import java.io.File;
import java.io.InputStream;
import java.io.StringReader;
import javax.xml.parsers.SAXParserFactory;
import org.apache.log4j.Logger;
import org.iso_relax.verifier.Verifier;
import org.iso_relax.verifier.VerifierFactory;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import com.sun.msv.verifier.jarv.TheFactoryImpl;
public class ValidateXml {
private static Logger logger = org.apache.log4j.Logger.getLogger(ValidateXml.class);
public static boolean validate(String xmlSource, File fileSchema) {
logger.debug("enter ValidateXml class");
//if schema file is null, then return;
if (fileSchema == null) {
logger.debug("file not found");
return false;
}
logger.debug("enter ValidateXml class step 1");
try {
VerifierFactory factory = new TheFactoryImpl();
Verifier verifier = factory.newVerifier(fileSchema);
logger.debug("enter ValidateXml class step 2");
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setNamespaceAware(true);
XMLReader reader = parserFactory.newSAXParser().getXMLReader();
reader.setContentHandler(verifier.getVerifierHandler());
logger.debug("enter ValidateXml class step 3");
//实现自己的错误处理。不写也可。有默认实现。
verifier.setErrorHandler(new ErrorHandler() {
public void error(SAXParseException e) {
e.printStackTrace();
logger.debug("error 1" + e.getMessage());
throw new RecieveValidationException(e.getLineNumber(), e
.getMessage());
}
public void fatalError(SAXParseException e) {
e.printStackTrace();
logger.debug("error 2" + e.getMessage());
throw new RecieveValidationException(e.getLineNumber(), e
.getMessage());
}
public void warning(SAXParseException e) {
e.printStackTrace();
logger.debug("error 3" + e.getMessage());
}
});
logger.debug("enter ValidateXml class step 4");
reader.parse(new InputSource(new StringReader(xmlSource)));
logger.debug("enter ValidateXml class step 5");
} catch (RecieveValidationException e) {
e.printStackTrace();
logger.debug("error 4" + e.getMessage());
//throw e;
return false;
} catch (Exception e) {
e.printStackTrace();
logger.debug("error 5" + e.getMessage());
//throw new RuntimeException(e);
return false;
}
return true;
}
写完之后发现有注释更为详细的,地址为http://blog.csdn.net/fenglibing/article/details/4150642
利用XMLReader的parse方法来validate。
需要设定XMLReader的ContentHandler(内容处理器)
ContentHandler采用sun的msv方式
简化流程为:
得到XMLReader实例
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setNamespaceAware(true);
XMLReader reader = parserFactory.newSAXParser().getXMLReader();
得到校验者verifier
VerifierFactory factory = new com.sun.msv.verifier.jarv.TheFactoryImpl();
Verifier verifier = factory.newVerifier(fileSchema);
设定reader的内容处理器ContentHandler
reader.setContentHandler(verifier.getVerifierHandler());
解析xml
reader.parse(new InputSource(new StringReader(xmlSource)));
以下为源码。
package com.bull.iris.portal.common;
import java.io.File;
import java.io.InputStream;
import java.io.StringReader;
import javax.xml.parsers.SAXParserFactory;
import org.apache.log4j.Logger;
import org.iso_relax.verifier.Verifier;
import org.iso_relax.verifier.VerifierFactory;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import com.sun.msv.verifier.jarv.TheFactoryImpl;
public class ValidateXml {
private static Logger logger = org.apache.log4j.Logger.getLogger(ValidateXml.class);
public static boolean validate(String xmlSource, File fileSchema) {
logger.debug("enter ValidateXml class");
//if schema file is null, then return;
if (fileSchema == null) {
logger.debug("file not found");
return false;
}
logger.debug("enter ValidateXml class step 1");
try {
VerifierFactory factory = new TheFactoryImpl();
Verifier verifier = factory.newVerifier(fileSchema);
logger.debug("enter ValidateXml class step 2");
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setNamespaceAware(true);
XMLReader reader = parserFactory.newSAXParser().getXMLReader();
reader.setContentHandler(verifier.getVerifierHandler());
logger.debug("enter ValidateXml class step 3");
//实现自己的错误处理。不写也可。有默认实现。
verifier.setErrorHandler(new ErrorHandler() {
public void error(SAXParseException e) {
e.printStackTrace();
logger.debug("error 1" + e.getMessage());
throw new RecieveValidationException(e.getLineNumber(), e
.getMessage());
}
public void fatalError(SAXParseException e) {
e.printStackTrace();
logger.debug("error 2" + e.getMessage());
throw new RecieveValidationException(e.getLineNumber(), e
.getMessage());
}
public void warning(SAXParseException e) {
e.printStackTrace();
logger.debug("error 3" + e.getMessage());
}
});
logger.debug("enter ValidateXml class step 4");
reader.parse(new InputSource(new StringReader(xmlSource)));
logger.debug("enter ValidateXml class step 5");
} catch (RecieveValidationException e) {
e.printStackTrace();
logger.debug("error 4" + e.getMessage());
//throw e;
return false;
} catch (Exception e) {
e.printStackTrace();
logger.debug("error 5" + e.getMessage());
//throw new RuntimeException(e);
return false;
}
return true;
}
发表评论
-
maven 和 sonar的集成
2013-05-22 18:34 1002maven 和 sonar的集成 1.须运行 Sonar ... -
观察者/监听器 在 Entity 上的应用
2013-05-09 16:10 6371. 创建 业务Entity 时, 不同的entity可以选 ... -
从spec开始做系统(页面tmplate问题)
2013-04-26 18:12 570好久不做页面了,差点搞不清页面之间的关系。 原来是因为在spe ... -
动态级联列表
2013-04-25 15:17 6791.典型如国家区域省级等。 数据结构: code: ... -
cache 的应用
2013-04-11 18:54 7531. 情境: 在用户注册时,需要注册的信息较多,如需要身份信 ... -
以用户请求为中心的实现
2013-04-10 11:25 8131. 定义抽象GenericRequest类。 该类具有 ... -
记录用户操作历史
2013-04-10 10:30 7301. 异步,通过jms来实现。 2. 容易改造,通过Enti ... -
kettle 应用 2
2013-03-26 18:42 0import org.pentaho.di.core ... -
kettle 应用
2013-03-26 11:57 0目前阶段主要是用kettle做一些数据的导入导出。 遇到的问 ... -
TreeMap 的应用
2013-03-06 18:40 10361. 应用场景。 对于一对多的映射 A --B --C ... -
sonar 安装问题汇总
2013-02-21 15:15 839首先参照 http://www.cnblogs.com/cui ... -
Bat命令学习
2013-02-20 12:11 1019基础部分: ======================== ... -
定时执行bat
2013-02-19 16:38 70591. 需求说明 要求每天定时执行自动化测试。例如每天晚上 ... -
frame 与 iframe 及其区别
2013-02-18 15:09 9601. html5 不支持frame。 2. iframe 可 ... -
tomcat 阅读笔记 3
2013-02-05 16:32 6321. lifesycleListener 是通过在conta ... -
Oracle编程艺术阅读笔记-1
2013-01-24 18:48 8371. 绑定变量。 不使用会产生的影响: 每次运 ... -
servlet怎么控制页面缓存
2013-01-04 21:33 884(转) Html页面中的HTTP ... -
搜索优化,动态页面,静态页面,伪静态页面
2013-01-04 17:56 1106我们经常会看到 , 在地 ... -
note
2012-12-27 18:10 5961. spring的JtaTransactionManage ... -
通过eventTrigger,JMS实现业务的异步处理
2012-12-27 15:44 813说明:实现对用户操作的跟踪。 eventTrigger来发送 ...
相关推荐
验证xsd和xml文件的小工具,方便检索xml格式是否与xsd一致。
patterns found in XML documents. It relies almost entirely on XPath query patterns for defining rules and checks.Schematron validation rules allow the author to specify a helpful error message which ...
It contains Schema documents to validate xml documents
一旦创建项目,我们就添加一个名为AddCategories的方法,并且给这个方法添加下列代码:[WebMethod]publicboolAddCategories(stringxml){try{using(SqlConnectionconn=newSqlConnection()){if(ValidateXml(xml)){Xml...
资源来自pypi官网。 资源全名:validate-bes-xml-1.1.1.tar.gz
validate_plist_xml 此python模块将验证Apple XML Plist文件 默认情况下,配置为检查具有以下扩展名的文件:( ('.recipe', '.plist', '.profile') 默认情况下,在当前工作目录中针对该目录和所有子目录中的所有...
Struts2验证应该包括验证器(需要xml配置)和Action中的validate()验证方法两种。后者很简单,只需要把 验证条件加进去就可以啦!
struts1.2使用的validate验证框架的validator-rules.xml配置文件
一个快速灵活的开源 XML 验证器,能够根据 XML 文档中定义的 XML 模式或强制另一个模式目标对 XML 文档执行批量验证。 XmlValidate通过文件名或 URL 或使用目标文件扩展名列表递归搜索目录来验证单个 XML 文档。 第...
XSD架构验证器 (XSD)模式验证器,使用执行实际验证。 先决条件 在后台,该实用程序使用Java进行实际验证。... validateXML ( xmlStr , 'resources/foo.xsd' , function ( err , result ) { if ( err ) {
* XMLSpyEnt只显示xml文件中的第一个Schema校验错误位置,如检查xml文件中是否还含有其他错误,请将出现错误的位置修改正确,然后在点击Validate图标,进行Schema校验,以此类推,直至该xml文件的Schema校验正确。...
view the xml tree and validate the syntax
alsolearn how to use document type definitions (DTDs) to describe and validate documents. This will become increasingly important as more and more browsers like Mozilla and Internet Explorer 5.0 ...
struts提供了标签来显示整个ActionErrors的错误信息。但要在struts-config.xml中设置<action ...
资源分类:Python库 所属语言:Python 资源全名:validate_plist_xml-1.0.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
从所给的xml文件中读取内容 动态生成web页面的控件 并完成验证 如果该项为必填项,那么在后面要用红色的*表示 按下Validate按钮之后完成页面输入内容验证,验证失败的控件底色为红色,并在页面上方显示错误信息 ...
验证XML,将XML解析为JS / JSON,反之亦然,或者快速将XML解析为Nimn,而无需基于C / C ++的库且没有回调 为了支付费用,我们计划并行发布版。 如有兴趣,请观看它以获取进一步的更新。 用户数 使用快速XML解析器的...
PHP Xml验证器 针对xsd模式文件验证Xml。 安装 图书馆 $ git clone https://github.com/seromenho/XmlValidator.git ...// Validate $ xmlValidator = new XmlValidator ( $ xml , $ xsd ); try { $ xmlValidator ->
Ajax-jedi-validate.zip,一个轻量级表单验证组件。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下...
Java API API文档java-xml-tool 这个Java项目说明了Java提供的XML API的用法: 解析和验证XML文档, 执行XSL转换 使用来自XML源的JPA填充数据库。 要求 ...java-xml-tool” ...java-xml-tool”。... validate schemafile