- 浏览: 255363 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1063maven 和 sonar的集成 1.须运行 Sonar ... -
观察者/监听器 在 Entity 上的应用
2013-05-09 16:10 6681. 创建 业务Entity 时, 不同的entity可以选 ... -
从spec开始做系统(页面tmplate问题)
2013-04-26 18:12 606好久不做页面了,差点搞不清页面之间的关系。 原来是因为在spe ... -
动态级联列表
2013-04-25 15:17 7231.典型如国家区域省级等。 数据结构: code: ... -
cache 的应用
2013-04-11 18:54 7851. 情境: 在用户注册时,需要注册的信息较多,如需要身份信 ... -
以用户请求为中心的实现
2013-04-10 11:25 8541. 定义抽象GenericRequest类。 该类具有 ... -
记录用户操作历史
2013-04-10 10:30 7691. 异步,通过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 10641. 应用场景。 对于一对多的映射 A --B --C ... -
sonar 安装问题汇总
2013-02-21 15:15 883首先参照 http://www.cnblogs.com/cui ... -
Bat命令学习
2013-02-20 12:11 1065基础部分: ======================== ... -
定时执行bat
2013-02-19 16:38 71001. 需求说明 要求每天定时执行自动化测试。例如每天晚上 ... -
frame 与 iframe 及其区别
2013-02-18 15:09 9941. html5 不支持frame。 2. iframe 可 ... -
tomcat 阅读笔记 3
2013-02-05 16:32 6661. lifesycleListener 是通过在conta ... -
Oracle编程艺术阅读笔记-1
2013-01-24 18:48 8761. 绑定变量。 不使用会产生的影响: 每次运 ... -
servlet怎么控制页面缓存
2013-01-04 21:33 928(转) Html页面中的HTTP ... -
搜索优化,动态页面,静态页面,伪静态页面
2013-01-04 17:56 1147我们经常会看到 , 在地 ... -
note
2012-12-27 18:10 6481. spring的JtaTransactionManage ... -
通过eventTrigger,JMS实现业务的异步处理
2012-12-27 15:44 844说明:实现对用户操作的跟踪。 eventTrigger来发送 ...
相关推荐
### 如何验证XML文档符合Schematron规则 #### Schematron模式概述 Schematron是一种简单而强大的结构化模式语言,用于对XML文档中的模式进行断言。它几乎完全依赖于XPath查询模式来定义规则和检查。Schematron验证...
验证xsd和xml文件的小工具,方便检索xml格式是否与xsd一致。
function validateXML(txt) { // 用于 IE 的代码 if (window.ActiveXObject) { var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(document.all(txt).value); if...
例如,可以创建一个`parseXMLFile`函数用于解析XML文件,`validateXML`函数用于校验XML的语法正确性。 2. **内存管理**:libxml2库内部使用了复杂的内存管理系统,二次封装时要确保正确管理内存分配和释放,避免...
5. 如需验证XML文档,可以使用“Plugins”->“XML Tools”->“Validate XML”。 通过这些插件,Notepad++不仅能够处理普通的文本编辑,还能在XML和JSON的处理上提供强大的支持,极大地提高了开发人员的工作效率。...
XSD架构验证器 (XSD)模式验证器,使用执行实际验证。 先决条件 在后台,该实用程序使用Java进行实际验证。... validateXML ( xmlStr , 'resources/foo.xsd' , function ( err , result ) { if ( err ) {
7. **验证安装**:启动NodePad++后,打开一个XML文件,点击菜单栏的"Plugins",你应该能看到"XML Tools"的选项,其中包括“Format Document”(格式化文档)、“Validate XML”(验证XML)等功能。这意味着XMLTools...
例如,"Format XML"用于格式化XML,"Validate XML"进行验证,"XPath Evaluator"执行XPath查询,"XSLT Transform"进行XSLT转换。 5. **应用场景**: - **ComparePlugin**适用于版本控制中的代码审查,比较不同版本...
在IntelliJ IDEA中,右键点击XML文件,选择"Validate XML"。在Eclipse中,可以通过"Project" -> "Clean"来刷新项目,使得IDE重新解析DTD。 4. **启用代码提示**:在IDE的设置中,确保XML的代码提示功能已启用。例如...
- 此外,还可以使用"Validate XML"功能检查XML文档的语法正确性,或者使用"XPath Evaluation"来执行XPath查询。 JSON(JavaScript Object Notation)是另一种轻量级的数据交换格式,常用于前端与后端之间的数据...
对于XML文件,可能还有校验功能,如“Validate XML”。 6. 其他Notepad++增强: Notepad++除了提供这些格式化插件外,还有很多其他增强功能,例如代码折叠、语法高亮、多文档界面、查找和替换功能、宏录制和播放等...
除了基本的XML格式化,Notepad++还提供了其他一些高级功能,比如验证XML文件的结构是否符合XML规范,通过XML Tools插件中的“Validate XML”选项实现。此外,还可以利用正则表达式进行搜索和替换,这对于清理大量XML...
`validate-bes-xml-1.1.1.tar.gz` 是在PyPI上发布的资源,它是一个名为`validate-bes-xml`的Python库的版本1.1.1的归档文件。该库主要用于验证Blackberry Enterprise Server(BES)的XML配置文件,确保其格式正确且...
JSF还提供了几种上下文参数,例如 `com.sun.faces.verifyObjects` 和 `com.sun.faces.validateXml`,它们会影响框架的行为。例如,`com.sun.faces.verifyObjects` 设置为 `false` 可能是为了提高性能,但可能会牺牲...
PB11.5支持XML Schema,可以使用`IXMLDOMDocument`的`validate`方法来验证XML文档是否符合预定义的Schema。 总结一下,PB11.5中的XML解析实例主要涵盖了以下几个方面: 1. DOM和SAX解析方式的介绍与选择。 2. 使用`...
3. **配置Struts-config.xml**:在项目的`struts-config.xml`文件中,需要配置你的ActionForm类和Action类,并指定`validate`方法将使用的表单字段。 ```xml <validate/> ``` 在这里,`<validate/>...
3. 验证XML:使用XML文档对象的validate方法,传入XSD文档对象作为参数。 4. 处理验证结果:检查验证结果,如果返回值为真,说明XML文档有效;否则,遍历错误集合获取错误信息。 通过这样的验证器,开发者可以确保...
function validateXML() { doc.load("example.xml"); if (!doc.validate()) { console.error("XML文档无效!"); } } ``` 总的来说,DTD是XML文档规范的核心组成部分,它为XML提供了一套严格的规则,确保数据的...
`Validate`方法可以用来执行此验证。 在ASP.NET中,XML常用于存储配置信息、数据交换以及与Web服务交互。结合`HttpPostedFileBase`类,你可以接收用户上传的XML文件,然后利用`XmlDocument`进行处理和分析。 在...