`

sxd文件约束xml,测试xml是否符合规范

    博客分类:
  • xml
 
阅读更多

经常会用到xml文件,但是不知道xml文件是否符合对应的xsd约束,下面粘贴出来验证的方法:

 

                          xsd文件约束xml,测试xml是否符合规范(附件为xml文件盒xsd文件)

 

 

 

package utlis;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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 changpan
 * @desc:深圳供需平台
 * Jun 7, 2013
 */
public class ValidateXMLUtils {
	/**
	 * 根据xsd文件验证xml文件是否符合规则
	 * @param xsdpath
	 * @param xmlpath
	 * @return
	 * @throws SAXException
	 * @throws IOException
	 */
	 public static Map<String,Object>   Validatexml(String xmlpath,String xsdpath) throws SAXException,IOException{
		 	 Map<String,Object> result = new HashMap<String,Object>();
		    //建立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
		    try{
		     validator.validate(source); 
		     result.put("status", 1);
		     result.put("message", "数据校验成功");
		     return result;
		    }catch(Exception ex){
				String error=ex.getMessage();
				error = error.substring(error.indexOf("valid.1.2.1:")+12,error.length());
				 result.put("status", 0);
			     result.put("message", error);
		     return result;
		     
		    }
		  }
	 public static void main(String[] args) {
		 String xsdpath="C:\\Users\\Administrator\\workspace_1\\jcjg\\supervision\\utlis\\objinfo.xsd";
		 String xmlpath="C:\\Users\\Administrator\\workspace_1\\jcjg\\supervision\\utlis\\objinfo.xml";
		 try {
			Map<String, Object> validatexml = Validatexml(xmlpath,xsdpath);
			System.out.println(validatexml);//{message=数据校验成功, status=1}
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

 

 

 

分享到:
评论

相关推荐

    C#开发的基于Arcgis二次开发浏览SXD文件

    7. **测试与部署**:完成开发后,进行详尽的测试,包括功能测试、性能测试和兼容性测试,确保应用在不同环境下的正常运行。最后,将应用程序打包并部署到目标环境中,供用户使用。 总之,这个项目涉及到C#编程、...

    sxd-document — Rust中的XML库-Rust开发

    SXD-Document Rust中的XML库。 概述目前,该项目分为两类:文档-基本DOM操作和读/写X SXD-Document Rust中的XML库。 概述该项目目前分为两个板条箱:文档-基本DOM操作和从字符串读取/写入XML。 xpath-XPath 1.0...

    initerror.xml

    会生成错误sxd的xml文档,

    SXD28035A_dsp_

    本篇将围绕"SXD28035A_dsp_"这一主题,结合提供的压缩包文件,深入探讨DSP28035的核心特性、编程模型以及实际应用。 1. **DSP28035概述** DSP28035是TI公司推出的一款32位浮点型处理器,它集成了丰富的外设和高...

    fig2sxd-开源

    "fig2sxd"正是这样一款开源工具,它专为图形文件格式转换而设计,尤其是将xfig格式的文件转化为OpenOffice.org或LibreOffice.org Draw所支持的格式,极大地拓展了用户在文档编辑中的图形处理能力。 xfig是一款历史...

    sxd-html:使用html5ever对sxd-documentsxd-xpath进行html解析

    在压缩包文件“sxd-html-master”中,可能包含了项目的源代码、示例、测试用例以及相关的文档。通过阅读源代码,开发者可以深入理解如何在Rust项目中集成html5ever和XPath,以便在自己的应用中实现类似的功能。测试...

    sxd.rar_74ls164_sxd

    标题中的“sxd.rar_74ls164_sxd”暗示了这是一个关于电子工程的项目,特别是与74LS164芯片相关的应用。74LS164是一款8位串行输入/并行输出的移位寄存器,常用于数字电路设计中,特别是在显示驱动或数据移位场合。在...

    玻尔电子护卫舰版之SXD28335_QFP软件例程

    《玻尔电子护卫舰版之SXD28335_QFP软件例程》是一份专为学习Texas Instruments(TI)公司生产的数字信号处理器(DSP)TMS320F28335设计的软件开发教程。这个教程包含了一系列的源代码示例,旨在帮助用户深入理解和...

    sxd-xpath — Rust中的XPath库-Rust开发

    SXD-XPath Rust中的XML XPath库。 概述项目分为两部分:文档-基本DOM操作和从SXD-XPath读取/写入XML Rust中的XML XPath库。 概述项目分为两部分:文档-基本DOM操作和从字符串读取/写入XML。 xpath-XPath 1.0表达式的...

    DSP 28035例程 ( SXD28035A)

    通过分析 SXD28035A 示例代码,可以学习到 DSP 28035 在实际应用中的编程技巧,例如中断服务例程、硬件外设的驱动编写以及浮点运算的实现等。 **总结** DSP 28035 是一个强大而灵活的处理器,适用于需要高速浮点...

    玻尔电子宙斯盾板之SXD28335B_QFP电路原理图

    玻尔电子宙斯盾板SXD28335B_QFP电路原理图是一款基于德州仪器(Texas Instruments, TI)的32位Delfino系列微控制器TMS320F28335的开发板电路原理图。TMS320F28335是一款广泛应用于工业控制的高性能浮点微处理器,...

    12 玻尔电子护卫舰版之SXD28335_QFP软件例程.zip

    这个压缩包文件的标题和描述指向了一个特定的电子项目,涉及到一款名为"玻尔电子护卫舰版"的硬件平台,以及其使用的微控制器SXD28335。SXD28335是一款常见的微处理器或微控制器,它通常集成了CPU、存储器、输入/输出...

    dubbo.xsd文件下载

    dubbo.xsd下载 dubbo 标签不错,亲测可用,下载之后添加.xsd文件约束就不报错了。

    发电机典型事故案例sxd .ppt

    发电机典型事故案例sxd .ppt

    玻尔电子宙斯盾板之SXD28335B_QFP用户手册

    该手册的主要内容围绕着如何使用SXD28335B开发板进行各项实验与测试,其中涉及的主要技术点和知识点如下: 1. GPIO控制LED及蜂鸣器实验:这涉及到基本的输入输出(GPIO)操作,通过GPIO控制LED灯的亮灭以及蜂鸣器的...

    康耐德C2000-A1-SXD0020-BX3使用说明书

    康耐德C2000-A1-SXD0020-BX3使用说明书 本문档為康耐德C2000-A1-SXD0020-BX3使用说明书,旨在指导用户正确使用康耐德C2000-A1-SXD0020-BX3产品。该产品是一款Ethernet→2DO遠端I/O模块,具有DO控制、远程I/O模块等...

    csisco.bin

    标题中的"csisco.bin"可能是指Cisco的某种特定配置或操作系统镜像文件,可能是用于网络设备模拟或教学的。在IT行业中,Cisco是一家知名的网络设备制造商,其产品广泛应用于企业级网络,数据中心以及互联网基础设施。...

    sxd-personnel-admin-1.020231106.zip

    sxd-personnel-admin-1.020231106.zipactivity

Global site tag (gtag.js) - Google Analytics