java使用xsd校验xml样例

时间:2023-01-12 16:40:44

知识点:
XSD文件是指XML结构定义 ( XML Schemas Definition )文件,是DTD的替代品。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求
XML Schema的优点:
  1) XML Schema基于XML,没有专门的语法
  2) XML可以象其他XML文件一样解析和处理
  3) XML Schema支持一系列的数据类型(int、float、Boolean、date等)
  4) XML Schema提供可扩充的数据模型。
  5) XML Schema支持综合命名空间
  6) XML Schema支持属性组。

可以使用Altova XMLSpy软件打开查看消息体的定义情况,使用:DTD/模式---产生样品XML文件夹,生成样例消息体

例子:

校验工具类方法:

ValidateXML.java

package com.xml.util;

import java.io.File;
import java.io.IOException;

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;

/**
 * 校验xml工具类
 */
public class ValidateXML {

private ValidateXML() {

}

public static boolean validateXml(String xsdPath, String xmlPath)
     throws SAXException, IOException {
 // 建立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
 validator.validate(source);

return true;
    }
}

测试类:

TestMain.java

package com.xml.test;

import java.io.IOException;

import org.xml.sax.SAXException;

import com.xml.util.ValidateXML;

public class TestMain {

/**
     * @param args
     * @throws Exception
     * @throws SAXException
     */
    public static void main(String[] args) {

String xsdPath = "D:\\test\\TRequest.xsd";
 String xmlPath = "D:\\test\\Request.xml";

try {
     if (ValidateXML.validateXml(xsdPath, xmlPath)) {
  System.out.println("校验通过");
     }
 } catch (SAXException e) {
     System.out.println("校验失败");
     e.printStackTrace();
 } catch (IOException e) {
     System.out.println("校验失败");
     e.printStackTrace();
 }

}

}

java使用xsd校验xml样例的更多相关文章

  1. Java - 使用 XSD 校验 XML

    package com.huey.dream.utils; import java.io.IOException; import java.io.InputStream; import javax.x ...

  2. Java&Xml教程(九)Java中通过XSD校验XML合法性

    Java XML校验API能够通过XSD(XML Schema Definition)校验XML文件内容的合法性.在下面的案例中使用javax.xml.validation.Validator 类通过 ...

  3. Java&Xml教程(九)Java中通过XSD校验XML合法性

    Java XML校验API可以通过XSD(XML Schema Definition)校验XML文件内容的合法性. 在以下的案例中使用javax.xml.validation.Validator 类通 ...

  4. Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) -- 样例(6)

    managed-schema 样例: <?xml version="1.0" encoding="UTF-8" ?> <!-- License ...

  5. C&num; XSD校验XML文件的代码

    /// <summary> /// XSD文件校验XML /// </summary> /// <returns></returns> public A ...

  6. java 状态模式 解说演示样例代码

    package org.rui.pattern; import junit.framework.*; /** * 为了使同一个方法调用能够产生不同的行为,State 模式在代理(surrogate)的 ...

  7. java 8 date time 简单样例

    参考 Java 8 Time Api 使用指南-珍藏限量版 Java 8 中处理日期和时间示例 部分样例 import java.time.temporal.TemporalAdjusters; im ...

  8. maven的pom&period;xml样例

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. pom&period;xml 样例

    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven ...

随机推荐

  1. 在eclipse中遇到cannot open output file xxx&period;exe&colon; Permission denied 的解决办法

    该问题出现的原因主要原因是,编译后运行的程序未能正确关闭,解决方法:删除debug目录即可 同理在vc6.0遇到同样问题时,删除debug目录,或者重启vc6.0即可

  2. mantis邮箱配置

    1.修改/var/www/html/mantisbt-1.3.3/config下config_inc.php配置文件 以163邮箱为例 # --- Email Configuration --- $g ...

  3. python中subprocess&period;Popen&period;poll

    import subprocess proc = subprocess.Popen(['python', 'test.py'], stdout=subprocess.PIPE) while 1: pr ...

  4. 显示和隐藏Mac隐藏文件的终端命令

    打开终端,输入以下命令: 显示mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏mac隐藏文件的命令 ...

  5. C&num;应用程序中读取Oracle数据库

    前言 最近的任务就是开发了一个功能,要从供应商那边读取数据,然后拿过来,处理以后放到我们自己的数据库中.供应商那边是Oracle数据库,其实不管什么数据我想都差不多,于是我就开始了.由于在家里写的博客 ...

  6. ContextLoaderListener初始化的前后文和DispatcherServlet初始化的上下文关系

    ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层.Service层Bean: DispatcherServlet ...

  7. ASP&period;NET MVC全局观

    全局      首先我们来看一副图片,由于这幅图是我自己画的,不是摘自微软官方,所以如果有什么不到位的地方还望海涵! 首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx ...

  8. Redis的主从复制的原理介绍

    redis主从复制 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或 ...

  9. 《老梁四大名著情商课》笔记-学学TA,你就是聚会的万人迷

    <老梁四大名著情商课>笔记-学学TA,你就是聚会的万人迷 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在社会学家有一个统计,说中国处在单身状态大概有2个亿.这些人中 ...

  10. SQL SERVER pivot(行转列),unpivot(列转行)

    [pivot]行转列:多行变一列 假设学生成绩表Score1 Name Subject Score 小张 语文 88 小花 数学 89 小张 数学 90 Name 语文 数学 小花 null 89 小 ...