`
no_bao
  • 浏览: 312271 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

xml验证二----java根据xsd验证xml

    博客分类:
  • java
阅读更多

 

xml 转换 xsd 参考

http://51876.iteye.com/blog/1972405

 

下面是根据转换后的xsd 使用java代码验证xml的合法性

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.Reader; 
import java.io.StringReader; 
 
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; 

 

 

public class XmlValidator { 
 
    public final static String SCHEMA_LANGUAGE = "http://www.w3.org/2001/XMLSchema"; 
 
    /**
     * @param xmlStr
     * @param xsdStr
     * @return XmlValidateResult 通过Schema验证指定的xml字符串是否符合结构
     */ 
    public static ReturnBean validateByXsd(String xmlStr, String xsdStr) { 
        // 查找支持指定模式语言的 SchemaFactory 的实现并返回它 
        SchemaFactory factory = SchemaFactory 
                .newInstance(XmlValidator.SCHEMA_LANGUAGE); 
        // 包装待验证的xml字符串为Reader 
        Reader xmlReader = new BufferedReader(new StringReader(xmlStr)); 
        // 保障Schema xsd字符串为Reader 
        Reader xsdReader = new BufferedReader(new StringReader(xsdStr)); 
        // 创建返回值类,默认为失败 
        ReturnBean vs = new ReturnBean(); 
 
        try { 
            // 构造Schema Source 
            Source xsdSource = new StreamSource(xsdReader); 
            // 解析作为模式的指定源并以模式形式返回它 
            Schema schema = factory.newSchema(xsdSource); 
 
            // 根据Schema检查xml文档的处理器,创建此 Schema 的新 Validator 
            Validator validator = schema.newValidator(); 
 
            // 构造待验证xml Source 
            Source xmlSource = new StreamSource(xmlReader); 
 
            // 执行验证 
            validator.validate(xmlSource); 
            // 设置验证通过 
            vs.setResult(ReturnUtil.ReturnTrue); 
            return vs; 
        } catch (SAXException ex) { 
            // 设置验证失败 
            vs.setResult(ReturnUtil.ReturnFalse); 
            // 设置验证失败信息 
            vs.setDescription(ex.getMessage()); 
            return vs; 
        } catch (IOException e) { 
            // 设置验证失败 
            vs.setResult(ReturnUtil.ReturnFalse); 
            // 设置验证失败信息 
            vs.setDescription(e.getMessage()); 
            return vs; 
        } 
    } 
 
    /**
     * @param args0
     * @throws IOException
     */ 
    public static void main(String[] args0) throws IOException { 
        File xml = new File("F:/mail.xml"); 
        File xsd = new File("F:/mail.xsd"); 
 
        BufferedReader xmlBuff = new BufferedReader(new FileReader(xml)); 
        BufferedReader xsdBuff = new BufferedReader(new FileReader(xsd)); 
 
        StringBuffer xmlStr = new StringBuffer(); 
        String line = null; 
        while ((line = xmlBuff.readLine()) != null) { 
            xmlStr.append(line); 
            xmlStr.append("\n"); 
        } 
        xmlBuff.close(); 
 
        StringBuffer xsdStr = new StringBuffer(); 
        line = null; 
        while ((line = xsdBuff.readLine()) != null) { 
            xsdStr.append(line); 
        } 
        xsdBuff.close(); 
 
        ReturnBean vs = XmlValidator.validateByXsd(xmlStr.toString(), 
                xsdStr.toString()); 
        if (ReturnUtil.ReturnTrue.equals(vs.getResult())) { 
            System.out.println("验证成功!"); 
        } else { 
            System.out.println("验证失败!"); 
            System.out.println("失败原因:" + vs.getDescription()); 
//            System.out.println("验证xml:\n" + xmlStr.toString()); 
        } 
 
    } 
}

分享到:
评论

相关推荐

    emf-sdo-xsd-SDK-2.3.2.zip

    它是XML文档验证的重要工具,确保XML文档遵循预定义的规则。 5. **emf-sdo-xsd-SDK-2.3.2**: 这个插件集成了EMF对SDO的支持,并提供了XSD的处理能力。它使得开发者可以利用EMF的模型驱动开发能力,处理基于SDO的...

    XML验证器(XSD验证XML)

    XML验证器(XSD验证XML)是指一种工具或程序,它能够检查XML文档是否符合预先定义的XSD模式。这个附带Delphi7源码的XML验证器,是为了解决在Delphi开发环境中对XML数据进行验证的需求。Delphi是一种流行的面向对象的...

    使用SAXParser(SAXParserFactory.newInstance())验证XML文件格式---XSD

    本篇文章将深入探讨如何使用Java中的SAXParser和SAXParserFactory类来验证XML文件是否符合指定的XSD规范。 首先,`SAXParserFactory.newInstance()` 是Java API中用于创建SAXParser实例的方法,它是`javax.xml....

    java生成xsd,xml示例

    XML用于结构化数据的存储和传输,而XSD则为XML文档提供了语义验证的规则。本教程将详细介绍如何在Java环境中生成XML和XSD文件。 XML是一种标记语言,它允许我们在文档中定义元素、属性和结构。这些元素和属性描述了...

    xmlschema-core-2.0.3的jar

    2. **验证XML文档**:通过编译的XSD模型,可以验证XML文档是否符合定义的模式,确保数据的有效性。 3. **类型转换**:XML Schema定义了丰富的数据类型,库提供了将XML数据转换为Java对象,以及反之的功能。 4. **...

    纯Java(swing)写的xsd验证xml - 含

    标题中的“纯Java(swing)写的xsd验证xml”是指使用Java编程语言,结合Swing图形用户界面库,开发的一个工具,用于验证XML文档是否符合指定的XSD(XML Schema Definition)规范。XML Schema是W3C推荐的一种XML文档...

    emf-xsd-Update-2.7.2

    XSD在EMF中扮演着重要的角色,因为它允许EMF解析和验证XML数据,确保符合预定义的模式。 【压缩包子文件的文件名称列表】: 1. content.jar - 这通常包含的是插件或应用的主要内容,可能包括EMF和XSD处理的类和其他...

    关于Spring的spring-beans-xsd和tx-xsd aop-xsd等

    这些XML配置文件依赖于特定的XSD(XML Schema Definition)文件来提供语法验证和代码编辑器的自动提示功能。在给定的压缩包中,包含了`spring-beans-3.0.xsd`、`spring-context-3.0.xsd`、`spring-aop-3.0.xsd`和`...

    根据XSD检查XML并修复

    附件是我写的一个demo程序,该程序的功能是根据一个定义好的XSD文件去检查指定的XML文件是否满足XSD的约束。 这里的约束比标准的约束要弱一些,比如:这里的约束不限制元素出现的顺序,只关心有没有这个元素。 我...

    Java-XML-programming-examples.rar_java programming

    通过“Java操作XML编程实例解析.doc”文档,你将能够看到如何在实际项目中应用上述技术,包括创建、读取、修改和验证XML文档,以及如何利用XML进行数据交换。每个示例都将帮助你巩固理论知识,并提升实际编程技能。...

    xml文件转xsd文件

    将XML文件转换为XSD文件,主要是为了更好地管理和验证XML文档的结构,确保数据的一致性和准确性,同时也便于生成对应的Java类,以进行程序开发。 在Java开发中,经常需要处理XML数据。有了XSD文件,开发者可以使用...

    XML指南--XML指南.rar

    二、XML文档结构 1. 文档类型声明(DOCTYPE):可选部分,用于指定XML文档遵循的DTD(Document Type Definition)或XSD(XML Schema Definition)。 2. XML声明:必需部分,如`<?xml version="1.0" encoding="UTF-8...

    xml课程设计---xml留言板

    - DTD(Document Type Definition)或XSD(XML Schema Definition):用于定义XML文档的结构和约束。 2. JSP(JavaServer Pages): - JSP基础:JSP是Java的一种动态网页技术,可以将HTML、CSS、JavaScript与Java...

    spring-aop-3.0.xsd spring-beans-3.0 spring-context-3.0.xsd spring-mvc-3.1.xsd

    `spring-aop-3.0.xsd` 是 Spring AOP 的 XML 配置文件,定义了与 AOP 相关的元素和属性。例如,你可以在这里定义切入点(pointcut)、通知(advises)以及代理配置。将此文件添加到 Eclipse 的 XML 目录(catalog)...

    JAXB 利用xsd文件生成java类

    在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) 文件来生成对应的Java类,从而简化XML处理的工作流程。 1. **XML Schema (XSD) 文件**: - XML Schema是一种W3C标准,用于定义XML文档的...

    XmlSchema-1.4.7.jar

    XML Schema是XML的一种规范,定义了如何验证XML文档的结构和数据类型,确保数据的准确性和一致性。 XML Schema(XSD)标准是用来定义XML文档的结构和数据类型的,它比早期的DTD(Document Type Definition)提供了...

    emf-xsd-SDK-2.7.1

    在Java开发中,XSD常用于验证XML输入数据的格式和完整性,或生成Java对象模型(JAXB)来直接与XML数据交互。 **VE (Visual Editor)** 是Eclipse中的一个插件,它基于EMF构建,提供了一个图形化界面,让用户能够直观...

    node-xsd-schema-validator:NodeJS的架构(XSD)验证器

    XSD架构验证器 (XSD)模式验证器,使用执行实际验证。 先决条件 在后台,该实用程序使用Java进行实际验证。 它假定javac和java在路径上。 如果存在JAVA_HOME环境变量,它将使用它来定位已安装的JDK。 在某些...

    xml 转成xsd

    在生成XSD后,开发人员可以利用这个XSD来验证新的XML文档,或者进一步将其转换为Java Bean。 Java Bean是一种特殊的Java类,通常遵循特定的设计模式,如具有默认构造函数、getter/setter方法以及可序列化等特性。将...

Global site tag (gtag.js) - Google Analytics