使用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 #### 背景与挑战 XML(可扩展标记语言)作为一种标准的数据交换格式,在Web服务、配置文件以及其他多种应用领域有着广泛的应用。随着XML的普及,对于XML数据有效性的校验变得越来越...
5. **XmlSchema类**:该类用于加载和处理XML Schema文件,可以创建一个XmlSchema对象来读取XSD文件,并构建出XML文档必须遵循的结构模型。 6. **XmlDocument类**:此类代表XML文档,提供加载XML数据、验证文档以及...
Schema校验通常发生在数据库、XML文档、JSON数据等场景,确保数据符合预定义的格式和规则,从而保证数据的一致性和准确性。 在描述中提到的“博文链接:https://jarip.iteye.com/blog/1953352”,虽然具体内容未给...
// 解析并校验XML文件 MyXmlElement element = (MyXmlElement) unmarshaller.unmarshal(new File("path_to_your_xml.xml")); System.out.println("XML文件校验成功"); } catch (JAXBException | SAXException e...
接下来,我们来看看如何使用DOM4J来解析和校验XML文档。DOM4J提供了一种简单的方法来加载XML和XSD文件,然后使用Schema类进行校验。以下是一个基本的步骤概述: 1. 加载XSD文件:使用DOM4J的DocumentHelper类的...
JSON Schema 是一个JSON格式的规范,用于定义JSON数据的结构和限制,类似于XML Schema和DTD(文档类型定义)。它提供了一种验证JSON数据是否符合预定义规则的方法,这对于API开发、数据交换和JSON数据存储非常有用。...
在Java中,XML Schema(XSD)用于定义和验证XML文档的结构和数据类型,确保文档遵循特定的规范。XML Schema文档使用XML语法定义了一系列规则,这些规则描述了有效XML文档应该具有的元素、属性、数据类型以及它们之间...
标题中的"schema校验所需要的jar包",指的是用于执行XML Schema校验的Java库。这些jar包是Java应用程序中使用的可执行代码的集合,它们包含了进行XML Schema验证所需的所有功能。这里提到的几个jar包分别是: 1. **...
jPDL4Schema 校验 jPDL(Java Process Definition Language)是一种流程定义语言,由 jBPM...添加 jPDL4 Schema 校验可以帮助开发者更为高效地编写流程定义 XML 源代码,提高开发效率,并简化流程定义描述文件的维护。
- **XSD(XML Schema Definition)校验**:通过XSD文件来校验XML文档的结构和内容是否符合预期。 - **Relax NG校验**:使用Relax NG语法来校验XML文档的结构。 - **Schematron校验**:通过Schematron规则来校验XML...
3. **校验XML**:当使用Castor的`unmarshal()`方法解析XML时,如果启用了XSD校验,Castor会自动检查XML是否符合指定的XSD。如果XML不符合规范,Castor将抛出`MarshalException`。 4. **异常处理**:在代码中,需要...
虽然此技术主要用于Web开发,但在控制台应用中也可以通过XMLHttpRequest对象加载和校验XML文档。 总结来说,在VC++中进行XML文档的校验主要涉及以下几个步骤: 1. 加载XML文档和XSD文件。 2. 将XSD添加到XML文档的...
- **数据一致性**:通过XML Schema,可以定义一组固定的模式来校验XML文档,确保其符合特定的要求。 - **提高数据质量**:通过对文档中的元素进行严格定义,减少错误和不一致的可能性。 - **增强应用程序集成能力...
在处理XML文档时,为了确保数据的准确性和一致性,我们常常会使用XSD(XML Schema Definition)来校验XML文档。XSD提供了一种形式化的语言,用于定义XML文档的结构和数据类型。 在标题“利用xsd校验xml”中,我们...
在.NET框架的类库中,有六个命名空间提供了XML文档处理的支持,包括System::Xml、System::Xml::Schema、System::Xml::Serialization、System::Xml::XPath、System::Xml::Xsl和System::Xml::Reader。这些命名空间中的...
* XMLSpyEnt只显示xml文件中的第一个Schema校验错误位置,如检查xml文件中是否还含有其他错误,请将出现错误的位置修改正确,然后在点击Validate图标,进行Schema校验,以此类推,直至该xml文件的Schema校验正确。...
总结来说,RapidJSON的JSON Schema校验功能结合C++和Linux环境,为我们提供了一种强大的方式来验证和约束JSON数据。通过处理远程$ref,我们可以将Schema设计得更加灵活和模块化。对于大型项目而言,这种能力至关重要...
5. **XML文件校验**:使用XMLSchema验证XML文件的结构和内容,报告任何不符合规则的问题。 总之,XMLTool是一个面向XML文件操作的便捷工具,它简化了XML数据的管理,并提供了校验功能以确保数据的正确性。对于初次...
使用DTD或Schema校验XML。从XML生成DTD或Schema。与其它编辑器相比最大不同之处在 于,Rinzo能够与Java elements结合在一起。你可以打开一个类的定义,自动完成类名,从XML声明创建类。这将非常有用假如你要编辑web....