`

schema校验xml大文件

阅读更多

使用dom4j进行校验时是将整个文件读入内存,处理大文件内存溢出。

使用xsd schema,通过stax读取xml大文件解决问题。

 

import java.io.*;

import javax.xml.transform.Source;

import javax.xml.transform.stream.StreamSource;

import javax.xml.validation.*;

import javax.xml.XMLConstants;

import org.xml.sax.SAXParseException;

 

public class XMLValidator {

public static void validate(String sourceFilePath, String schemaFilePath) throws Exception {

// 1. Lookup a factory for the W3C XML Schema language

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

 

// 2. Compile the schema.

// Here the schema is loaded from a java.io.File, but you could use

// a java.net.URL or a javax.xml.transform.Source instead.

File schemaLocation = new File(schemaFilePath);

Schema schema = factory.newSchema(schemaLocation);

 

// 3. Get a validator from the schema.

Validator validator = schema.newValidator();

 

// 使用javax.stream 读取源文件

Source source = new StreamSource(sourceFilePath);

try {

validator.validate(source);

} catch (SAXParseException ex) {

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

//可获取文件、行号、具体原因

}

}

内部实现采用apache xerces

com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator fSchemaValidator;

http://www.ibm.com/developerworks/xml/library/x-javaxmlvalidapi.html

 

之前遇到问题:

在处理镜像大文件时需要按规则分解生成小文件并进行校验,channel+stax有效提高了读取300M以上XML文件并写入的效率。开始在使用dom4j写xml时效率难以忍受,主要原因是在按节点写入时的校验过程影响效率。后来通过file channel+stax方式读取xml,写入文件(不做格式校验,当做txt文件来写)效率非常高,可以满足需求。

 

 

分享到:
评论

相关推荐

    Java通过XML Schema校验XML

    ### Java通过XML Schema校验XML #### 背景与挑战 XML(可扩展标记语言)作为一种标准的数据交换格式,在Web服务、配置文件以及其他多种应用领域有着广泛的应用。随着XML的普及,对于XML数据有效性的校验变得越来越...

    通过Schema验证XML格式是否正确

    5. **XmlSchema类**:该类用于加载和处理XML Schema文件,可以创建一个XmlSchema对象来读取XSD文件,并构建出XML文档必须遵循的结构模型。 6. **XmlDocument类**:此类代表XML文档,提供加载XML数据、验证文档以及...

    schema校验问题

    Schema校验通常发生在数据库、XML文档、JSON数据等场景,确保数据符合预定义的格式和规则,从而保证数据的一致性和准确性。 在描述中提到的“博文链接:https://jarip.iteye.com/blog/1953352”,虽然具体内容未给...

    Schema校验java

    // 解析并校验XML文件 MyXmlElement element = (MyXmlElement) unmarshaller.unmarshal(new File("path_to_your_xml.xml")); System.out.println("XML文件校验成功"); } catch (JAXBException | SAXException e...

    XSD使用dom4j校验XML

    接下来,我们来看看如何使用DOM4J来解析和校验XML文档。DOM4J提供了一种简单的方法来加载XML和XSD文件,然后使用Schema类进行校验。以下是一个基本的步骤概述: 1. 加载XSD文件:使用DOM4J的DocumentHelper类的...

    JSON Schema 校验库——json-schema-validator(java版本).rar

    JSON Schema 是一个JSON格式的规范,用于定义JSON数据的结构和限制,类似于XML Schema和DTD(文档类型定义)。它提供了一种验证JSON数据是否符合预定义规则的方法,这对于API开发、数据交换和JSON数据存储非常有用。...

    java中实现xmlschema验证文件借鉴.pdf

    在Java中,XML Schema(XSD)用于定义和验证XML文档的结构和数据类型,确保文档遵循特定的规范。XML Schema文档使用XML语法定义了一系列规则,这些规则描述了有效XML文档应该具有的元素、属性、数据类型以及它们之间...

    schema校验所需要的jar包

    标题中的"schema校验所需要的jar包",指的是用于执行XML Schema校验的Java库。这些jar包是Java应用程序中使用的可执行代码的集合,它们包含了进行XML Schema验证所需的所有功能。这里提到的几个jar包分别是: 1. **...

    添加jPDL4Schema校验.doc

    jPDL4Schema 校验 jPDL(Java Process Definition Language)是一种流程定义语言,由 jBPM...添加 jPDL4 Schema 校验可以帮助开发者更为高效地编写流程定义 XML 源代码,提高开发效率,并简化流程定义描述文件的维护。

    XML校验工具,可以用来进行XML合法性检验

    - **XSD(XML Schema Definition)校验**:通过XSD文件来校验XML文档的结构和内容是否符合预期。 - **Relax NG校验**:使用Relax NG语法来校验XML文档的结构。 - **Schematron校验**:通过Schematron规则来校验XML...

    castor解析xml与xsd校验xml

    3. **校验XML**:当使用Castor的`unmarshal()`方法解析XML时,如果启用了XSD校验,Castor会自动检查XML是否符合指定的XSD。如果XML不符合规范,Castor将抛出`MarshalException`。 4. **异常处理**:在代码中,需要...

    schema_xml.rar_vc xml

    虽然此技术主要用于Web开发,但在控制台应用中也可以通过XMLHttpRequest对象加载和校验XML文档。 总结来说,在VC++中进行XML文档的校验主要涉及以下几个步骤: 1. 加载XML文档和XSD文件。 2. 将XSD添加到XML文档的...

    XML Schema

    - **数据一致性**:通过XML Schema,可以定义一组固定的模式来校验XML文档,确保其符合特定的要求。 - **提高数据质量**:通过对文档中的元素进行严格定义,减少错误和不一致的可能性。 - **增强应用程序集成能力...

    利用xsd校验xml

    在处理XML文档时,为了确保数据的准确性和一致性,我们常常会使用XSD(XML Schema Definition)来校验XML文档。XSD提供了一种形式化的语言,用于定义XML文档的结构和数据类型。 在标题“利用xsd校验xml”中,我们...

    C++ xml文件处理介绍

    在.NET框架的类库中,有六个命名空间提供了XML文档处理的支持,包括System::Xml、System::Xml::Schema、System::Xml::Serialization、System::Xml::XPath、System::Xml::Xsl和System::Xml::Reader。这些命名空间中的...

    XMLSpy使用说明及技巧

    * XMLSpyEnt只显示xml文件中的第一个Schema校验错误位置,如检查xml文件中是否还含有其他错误,请将出现错误的位置修改正确,然后在点击Validate图标,进行Schema校验,以此类推,直至该xml文件的Schema校验正确。...

    rapidjson schema 校验

    总结来说,RapidJSON的JSON Schema校验功能结合C++和Linux环境,为我们提供了一种强大的方式来验证和约束JSON数据。通过处理远程$ref,我们可以将Schema设计得更加灵活和模块化。对于大型项目而言,这种能力至关重要...

    XMLTool xml文件小工具

    5. **XML文件校验**:使用XMLSchema验证XML文件的结构和内容,报告任何不符合规则的问题。 总之,XMLTool是一个面向XML文件操作的便捷工具,它简化了XML数据的管理,并提供了校验功能以确保数据的正确性。对于初次...

    Eclipse的XML编辑器

    使用DTD或Schema校验XML。从XML生成DTD或Schema。与其它编辑器相比最大不同之处在 于,Rinzo能够与Java elements结合在一起。你可以打开一个类的定义,自动完成类名,从XML声明创建类。这将非常有用假如你要编辑web....

Global site tag (gtag.js) - Google Analytics