`

6、xsd验证xml文件的java代码

 
阅读更多
package com;
import java.io.ByteArrayInputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
  
import javax.xml.XMLConstants;  
import javax.xml.stream.FactoryConfigurationError;  
import javax.xml.stream.XMLInputFactory;  
import javax.xml.stream.XMLStreamException;  
import javax.xml.stream.XMLStreamReader;  
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.apache.axiom.om.OMElement;  
import org.apache.axiom.om.impl.builder.StAXOMBuilder;  
import org.xml.sax.SAXException;  
  
public class validateXML {  
  
    /** 
     * XSD和XML文件放在工程的bin路径下 
     */  
    public static boolean validate(String schemaLocaltion, OMElement request)  
            throws SAXException, IOException {  
        // 获取Schema工厂类  
        // 这里的XMLConstants.W3C_XML_SCHEMA_NS_URI的值就是://http://www.w3.org/2001/XMLSchema  
        SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);  
        // 获取XSD文件,以流的方式读取到Source中  
        // XSD文件的位置相对于类文件位置  
        Source schemaSource = new StreamSource(new FileInputStream(schemaLocaltion));  
  
        Schema schema = factory.newSchema(schemaSource);  
        // 这里是将一个DOM树对象转换成流对象,以便对DOM树对象验证  
        // 如果是对XML文件进行验证,用FileInputStream即可  
        String input = request.toString();  
        ByteArrayInputStream bais = new ByteArrayInputStream(  
                input.getBytes("UTF-8"));  
        // 获取验证器,验证器的XML Schema源就是之前创建的Schema  
        Validator validator = schema.newValidator();  
  
        Source source = new StreamSource(bais);  
        // 执行验证  
        try {  
            validator.validate(source);  
            return true;  
        } catch (Exception ex) {  
            ex.printStackTrace();  
            return false;  
        } finally {  
            bais.close();  
        }  
    }  
  
    /** 
     * get OMElement soap request from specified XML file. 
     *  
     * @param request 
     * @return 
     * @throws FileNotFoundException 
     * @throws XMLStreamException 
     * @throws FactoryConfigurationError 
     */  
    public static OMElement getRequest(String filePath)  
            throws FileNotFoundException, XMLStreamException,  
            FactoryConfigurationError {  
        XMLStreamReader reader = XMLInputFactory.newInstance()  
                .createXMLStreamReader(  
                        new FileInputStream(new File(filePath)));  
        StAXOMBuilder builder = new StAXOMBuilder(reader);  
        OMElement requestMessage = builder.getDocumentElement();  
        return requestMessage;  
    }  
  
    public static void main(String[] args) {  
        try {  
            if (validate("D:\\Documents\\2014.11work\\mzyw1.xsd", getRequest("D:\\Documents\\2014.11work\\mzyw1.xml"))) {  
                System.out.println("customer_err.xml格式良好");  
            } else {  
                System.out.println("customer_err.xml格式有误,请检查!");  
            }  
        } catch (Exception ex) {  
            ex.printStackTrace();  
            System.out.println("文件格式有误,请检查!");  
        }  
    }  
}  

 

分享到:
评论

相关推荐

    xml文件转xsd文件

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

    java生成xsd,xml示例

    在提供的压缩包文件`xml_test`中,可能包含了用于演示如何生成XML和XSD的Java代码和样例文件。通过阅读和理解这些代码,你可以更好地掌握在Java环境下处理XML和XSD的方法。 总结起来,Java生成XML和XSD涉及到XML和...

    XML验证器(XSD验证XML)

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

    XSD使用dom4j校验XML

    总之,DOM4J结合XSD提供了一种高效且灵活的方式来验证XML文件的结构和内容。这对于保证数据交换的准确性和一致性具有重要意义,特别是在需要处理大量XML数据的系统中。理解和掌握这一技术,能够帮助开发者提高代码的...

    根据XSD检查XML并修复

    附件是我写的一个demo程序,该程序的功能是根据一个定义好的XSD文件去检查...1 解析XSD文件,并将其规定的XML结构映射至自定义的Java类(XMLNode); 2 根据得到XML结构,逐一检查目标XML中是否存在指定的元素或属性。

    JAXB 利用xsd文件生成java类

    - **编译XSD到Java类**:使用JAXB的`xjc`工具,可以将XSD文件转换为Java源代码。`xjc`命令行工具通常包含在JDK中,也可以通过Maven或Gradle插件集成到构建流程中。 - **绑定配置**:通过在XSD文件中添加特殊的JAXB...

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

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

    xml文件自动转成java对象工具

    XSD是XML的一种规范,定义了XML文档的结构和数据类型,它提供了一种方式来验证XML文档是否符合预设的规则。XSD文件转Java工具能够基于XSD文件生成对应的Java类,这些类包含了与XSD定义的元素和属性相对应的字段和...

    java中Dom验证XMl文件合法非法

    总结来说,Java中的DOM解析器配合XML Schema Factory可以有效地验证XML文件的合法性,通过捕获解析异常和检查返回的`Document`对象来判断验证结果。同时,注意性能优化和安全防护,避免潜在的攻击风险。

    用java读取修改xml文件的代码实现

    Java还提供了处理XML Schema(XSD)的能力,可以验证XML文档是否符合特定的模式。`javax.xml.validation`包包含了所需的工具,如`SchemaFactory`和`Validator`。 在实际应用中,选择合适的解析器取决于XML文件的...

    Xsd转换xml

    一旦有了XSD,我们就可以根据这个模式验证XML文档,确保其符合规范。 在“Xsd转换xml”这个场景中,通常指的是利用XSD文件生成对应的XML实例文档。这个过程是基于XSD的规则,自动生成一个符合该模式的XML文档。这在...

    利用xsd校验xml

    在标题“利用xsd校验xml”中,我们讨论的核心是通过XML Schema(XSD)来验证XML文档是否符合预定义的模式。这个过程是确保XML数据有效性和正确性的重要步骤,特别是当XML被用作数据交换或者在复杂的系统间通信时。 ...

    ehcache.xsd_ehcache.xml代码提示.rar

    【描述解析】:描述中提到“已测试有效的ehcache.xsd文件”,这指的是Ehcache的XML Schema定义文件,xsd文件是用于验证XML文档结构的规范。将此xsd文件导入到IDE(集成开发环境)中,可以确保ehcache.xml配置文件的...

    XSD根据xml生成schema文件

    6. **验证XML文档**:生成XSD文件后,可以将其与XML文档一起使用,通过XML解析器进行验证。如果XML文档符合XSD定义的规则,那么解析器会返回成功,否则会报告错误。 在实际应用中,XSD不仅可以帮助我们验证XML文档...

    java操作xml文件的一个简单代码

    为了深入理解这些概念,你可以参考Java的官方文档,学习每个API的用法,并通过实践编写代码来操作XML文件,例如,创建XML文件,读取XML文件,添加、删除和修改元素,验证XML结构等。同时,也可以查阅DOM4J、JDOM等第...

    xsd转换成java对象

    XSD转换成Java对象的过程,也称为XML到Java对象的绑定或者XML Schema Binding,是将XML数据映射为Java类,使得程序能够方便地读取、操作和验证XML数据。这一过程在处理XML数据丰富的系统中非常常见,如Web服务或企业...

    java读取xml文件

    本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 DTD(Document Type Definition)验证。 首先,我们需要了解 Java 中用于解析 XML 的主要库:JAXB (Java Architecture for XML Binding) 和 DOM ...

    castor1.4 xsd生成java

    - 使用Castor工具:运行Castor的`generate`命令,指定XSD文件的位置,它会自动生成相应的Java源代码。 - 编译Java类:使用Java编译器将生成的Java源代码编译为字节码。 - 使用生成的Java类:现在可以使用这些Java...

    xml 转成xsd

    在Java代码中,可以调用Trang提供的API或命令行工具,传入XML文件作为输入,输出对应的XSD文件。 一旦有了XSD文件,就可以使用JAXB或类似的库(如Apache CXF或Castor)自动生成Java Bean类。这些生成的类会包含对应...

Global site tag (gtag.js) - Google Analytics