xsd验证xml的两种方法

掌握Apache Commons Digester解析XML的实战指南 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它被设计为能够描述各种类型的数据,从简单的数据列表到复杂的数据结构。XML以一种不依赖于应用程序或供应商的格式,使数据的存储和共享变得简单。XSD(XML Schema Definition)是一种用于定义XML文档结构的XML语法。它不仅可以描述数据的结构,还能指定数据类型的约束,如数值范围、字符串长度等。XSD是XML的验证机制,确保XML文档符合既定的规则和结构。 阅读详情
方法一:
private boolean validateXMLByXSD(String xml) throws SAXException, UnsupportedEncodingException

    {

        //建立schema工厂

        SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

        //建立验证文档文件对象,利用此文件对象所封装的文件进行schema验证

        File schemaFile = new File(EAPConfig.web_root_path + "soc/Resources/eventRelevance/rce.xsd");

        //利用schema工厂,接收验证文档文件对象生成Schema对象

        Schema schema = schemaFactory.newSchema(schemaFile);

        //通过Schema产生针对于此Schema的验证器,利用schenaFile进行验证

        Validator validator = schema.newValidator();

        //得到验证的数据源

        Source source = new StreamSource("D:\\test.xml");

        //开始验证,成功输出success!!!,失败输出fail

//参数还可以用文件的String转为的inputstreamnew //ByteArrayInputStream(text.getBytes("UTF-8"));

        try {

            validator.validate(source);

        }

        catch (Exception ex) {

            System.out.println( ex.getMessage());   

                     ex.printStackTrace();   

            return false;

        }

        return true;

}

方法二:需要引入dom4j.jar

/** 

     * 通过XSD(XML Schema)校验XML 

     */ 

    public static void validateXMLByXSD() { 

        String xmlFileName = "/test.xml"; 

        String xsdFileName = "/rce.xsd"; 

        try { 

            //创建默认的XML错误处理器 

            XMLErrorHandler errorHandler = new XMLErrorHandler(); 

            //获取基于 SAX 的解析器的实例 

            SAXParserFactory factory = SAXParserFactory.newInstance(); 

            //解析器在解析时验证 XML 内容。 

            factory.setValidating(true); 

            //指定由此代码生成的解析器将提供对 XML 名称空间的支持。 

            factory.setNamespaceAware(true); 

            //使用当前配置的工厂参数创建 SAXParser 的一个新实例。 

            SAXParser parser = factory.newSAXParser(); 

            //创建一个读取工具 

            SAXReader xmlReader = new SAXReader(); 

            //获取要校验xml文档实例 

            Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName)); 

            //设置 XMLReader 的基础实现中的特定属性。核心功能和属性列表可以在 http://sax.sourceforge.net/?selected=get-set 中找到。 

            parser.setProperty( 

                    "http://java.sun.com/xml/jaxp/properties/schemaLanguage", 

                    "http://www.w3.org/2001/XMLSchema"); 

            parser.setProperty( 

                    "http://java.sun.com/xml/jaxp/properties/schemaSource", 

                    "file:" + xsdFileName); 

            //创建一个SAXValidator校验工具,并设置校验工具的属性 

            SAXValidator validator = new SAXValidator(parser.getXMLReader()); 

            //设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。 

            validator.setErrorHandler(errorHandler); 

            //校验 

            validator.validate(xmlDocument); 

            XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint()); 

            //如果错误信息不为空,说明校验失败,打印错误信息 

            if (errorHandler.getErrors().hasContent()) { 

                System.out.println("XML文件通过XSD文件校验失败!"); 

                writer.write(errorHandler.getErrors()); 

            } else { 

                System.out.println("Good! XML文件通过XSD文件校验成功!"); 

            } 

        } catch (Exception ex) { 

            System.out.println("XML文件: " + xmlFileName + " 通过XSD文件:" + xsdFileName + "检验失败。\n原因: " + ex.getMessage()); 

            ex.printStackTrace(); 

        }



go-xsd-validate:基于libxml2的go的Xsd验证 xsdvalidate 该软件包的目标是将xsd文件预加载到内存中,并使用libxml2(快速)验证xml,例如xml服务端点或api路由器的后主体。 在撰写本文时,我在github上找到的类似软件包没有提供错误详细信息,或者卡在了负载下。 除了提供错误字符串外,它还公开了libxml2返回结构的某些字段。 api参考 安装 通过分发包管理器或从源代码安装libxml2 dev,下面是一个如何在linux(Debian / Ubuntu)上从源代码安装最新的libxml2的示例: curl -L ftp://xmlsoft.org/libxml2/LATEST_LIBXML2 -o ./L 立即下载

相关推荐

datax web升级springboot3 jdk17

datax web但GitHub上还是springboot2,没有升级过,最近扫漏洞发现spring-core漏洞必须升级到6.x才能解决,这时不得不将springboot升级到3.x,随之而来是jdk、mybatis-plus等等的升级,调整了几天才没问题,痛苦的开发人生~~以上,有疑问欢迎留言。

liyinglong1023的博客 973

使用 Schema xsd 文件校验 xml 文件格式

【代码】使用 Schema xsd 文件校验 xml 文件格式。

小单的博客专栏 560

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 235

使用xsd验证xml格式的正确性

3.该方式验证xml格式正确性,轻代码重xsd配置,但也有好处,当xml格式发生改变时,无需修改代码,只需要对应修改xsd即可,且相对代码来说,易上手。

qq_37016994的博客 4575

LMS Virtual.Lab二次开发:声学仿真结果导出方法(VBScript、Python)

Siemens LMS Virtual.Lab 提供一套集成软件平台用以模拟机械系统的品质属性,如结构完整性、振动噪声、耐久性、系统动力学特性、驾驶的平顺性及操纵的稳定性等。

爱看书的小沐 6018

蓝牙学习笔记之SMP协议(十四)

目录 写在前面 SM规范简述 安全管理器 加密工具 配对流程 安全属性 IO功能 加密密钥大小 配对算法 低功耗蓝牙安全 密钥和值的定义 分发密钥的生成 密钥分配 安全管理器会话协议 介绍 ​​​​​​​命令格式 写在前面 安全规范协议,主要是描述LE控制器设备配对、认证、加密等过程进行规定,同时也对相关算法进行了说明。 低功耗蓝牙的安全管理经历了几个阶段,L...

在云巅的博客 3662

验证基于dtd或xsd生成的xml的有效性

代码参考: https://gitee.com/burns/ValidateXml.git 项目结构: 关键代码 ValidateXMLDTD.java package com.burns.validate.xml; import java.io.FileNotFoundException; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers..

爱的叹息的专栏 741

SAP Group Reporting入门指南(11)--配置

这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找触发FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为贷方。这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找源FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为借方。例如,添加一个包含用于存储百分比的 FS 项的选项。这里选择的是FS项目的角色属性值,如果这里定义了,那么就从FS项目中找到FS项目角色属性值与之匹配的FS项目作为贷方。

bflyfish的博客 568

XSD校验XML

XSD文件 (XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 具体使用方法和定义请参看: http://www.w3school.com.cn/schema/index.asp   java自jdk1.5以上新增了SchemaFactory类 可以实现对XSD验证的支持,使用起来也很方便。 以下代码可用在JDK1.5+

myheartjava的专栏 1125

通信原理 | python调制识别数据及代码

数据集包含了从-20dB 到+18dB 总共 20 个信噪比(步长为 2)下的 11 种调制信号, 包括 AM-DSB、 AM-SSB 和 WBFM 三种模拟调制信号,以及 BPSK、 QPSK、 8PSK、 CPFSK、 GFSK、 PAM4、 QAM16 和 QAM64 八种数字调制信号。其中信号的中心频率为 200KHz,采样频率为 1Msamp/s,且每个信噪比下每种调制信号包含 1000 个信号。其中每个信号包含 IQ 两路数据,且每一路数据都包含有 128 个采样点。

若北辰 1758

Kalibr 安装+制作采集的图片和IMU数据生成 .bag 文件 (坑最全,解决方法最简单,最详细哈哈)

方法一、Kalibr标定工具实现 开源代码连接:https://github.com/ethz-asl/kalibr 1.1 创建工作空间 ——下载程序——编译 mkdir -p ~/kalibr_workspace/src cd /kalibr_workspace/src git clone https://github.com/ethz-asl/Kalibr.git cd .. //返回上一级 catkin_make source devel/setup.bash ......

努力努力努力 6939

使用XSD模式验证XML数据

1.使用XSD模式验证XML数据 验证XML文档的步骤 (1)定义一个ValidationEventHandle事件处理方法。 (2)创建XmlReaderSettings对象的实例。 (3)将ValidationEventHandle与XmlReaderSettings相关联 (4) 将XmlReaderSettings的ValidationType属性设置为Va...

weixin_30919429的博客 526

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

对XML文件的重新认识,说说XML文件的二三事(二):两种验证模式-DTD和XSD

认识两种XML的验证模式是在Spring源码深度解析中看到的,这本书上来就介绍XML的基本知识,可见XML在Spring的配置中所占据的重要作用,这两种验证模式的出现主要是为了适应XML的较广的应用范围,因此需要极其严格的格式。话不多说,来介绍下XML的两种验证模式; 1.DTD和XSD两种验证模式的定义 DTD:DocumentType Definition直译为文档类型定义,作为一种XML

郭浩(C/C++) 1137

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

xmlspy xsd生成java_XmlSpy / XSD 以及 验证

很早以前看过一句话:“XML就象空气”,在企业应用开发中XML是一个重要的数据交换标准。而XSD则可以用来校验XML的数据格式是否正确。一个典型的XSD文件如下:1 2 3 4 5 6 运单7 8 9 10 11 12 ...

weixin_39986178的博客 687

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于XML的验证(DTD与XSD)一点实践

[转自] http://blog.chinaunix.net/uid-276853-id-366491.html 关于XML的验证一点实践 1)此方法是在XML文档中绑定对应的DTD文件来进行的 //部分程序代码如下: //为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder DocumentBu...

weixin_30814223的博客 185

xml 的xsd验证汇总

两种方式我都试过,都好用 //通过xsd验证xml的合法性一     private boolean validateXMLByXSD(String xml) throws SAXException, UnsupportedEncodingException     {         //建立schema工厂         SchemaFactory schemaFactor...

Xinghaiguzhou的专栏 498

获取XML的验证模式。

最近在研究Spring源码,博文中的内容来源《Spring源码深度解析》这一本书,感激不尽。

孤芳不自赏 1123

深入解析 Spring 获取 XML 验证模式的过程

Spring框架XML验证模式解析 Spring框架在加载XML配置文件时采用两种验证模式:DTD和XSD。系统通过XmlBeanDefinitionReader和XmlValidationModeDetector类自动检测验证模式,优先检查DOCTYPE声明判断是否使用DTD模式,否则默认采用XSD验证。XSD因其支持命名空间、复杂数据类型和模块化扩展等优势,成为Spring的默认选择。开发者需确保XML配置文件中DOCTYPE声明或schemaLocation属性的准确性,避免验证错误。

持续输出Java相关知识 1016

在C#中用xsd文件验证xml文件的格式正确性

person.xml:(不带命名空间) 张三 120 李四 20 person.xsd: 本文档定义Persons.xml的格式

zhulongxi的博客 1792

1.3 Spring源码解析——获取XML的验证模式

 XML文件的验证模式保证了XML文件的正确性,而比较常用的验证模式有两种:DTD和XSD两种。  使用DTD验证模式需要在XML文件的头部声明。  使用XSD除了要声明名称空间外,必须指定该名称空间所对应的XML Schema文件的存储位置。 getValidationModeForResource()方法,如下 protected int getValidationModeFo...

szhlcy的博客 179

C#使用xsd文件验证XML 格式是否正确

方法一: 我使用XmlReader来处理,因为觉得XmlReader简单点。 我自己做了个例子来说明,例子里的XML不是很复杂,没有子节点的。 XML 文件(a.xml): <?xml version="1.0" encoding="utf-8" ?> <PROFILE> <PROFILEID>0001</PROFILEID> ...

weixin_34126215的博客 313

dubbo.xsd的配置

报错:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no d...

weixin_34044273的博客 146

Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法

或者报错:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaratio...

ice-wee的专栏 7640

eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法

eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法

mhx123456789的博客 156
上一篇: 验证xml--xsd和dtd
下一篇: 编写一个xml Schema
普通网友
博客等级 码龄15年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值