`
terrencexu
  • 浏览: 122505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAXB: 通过schema验证XML文件

阅读更多

接上文 JAXB:使用annotation绑定XML(xmlns)

 

在使用JAXB解析XML文件的时候我们有时候可能会需要通过schema文件验证XML的格式,接上文的XMLParser.java

 

示例代码如下:

public static Object unmarshal(InputStream xml, Class<?> clazz) throws SAXException {
		Object obj = null;
		
		ValidationEventCollector vec = new ValidationEventCollector();
		
		try {
			SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            Schema schema = sf.newSchema(new File("C:\\eclipse\\workspace1\\STAF\\test\\employees.xsd"));
			
			JAXBContext jc = JAXBContext.newInstance(clazz.getPackage().getName());
			Unmarshaller u = jc.createUnmarshaller();
			u.setSchema(schema);
            u.setEventHandler(vec);
			
			obj = u.unmarshal(xml);
		} catch (JAXBException e) {
			throw new RuntimeException("Can't unmarshal the XML file, error message: " + e.getMessage());
		} finally {
			if(vec != null && vec.hasEvents()) {
            	for(ValidationEvent ve : vec.getEvents()) {
            		String msg = ve.getMessage();
            		ValidationEventLocator vel = ve.getLocator();
            		int line = vel.getLineNumber();
            		int column = vel.getColumnNumber();
            		System.out.println();
            		System.err.println("At line " + line + ", column " + column + ": " + msg);
            	}
            }
		}
		
		return obj;
	}

 

该代码段适用于单一schema,或者在classpath中的多schema验证,如果是classpath外的多schema验证,请结合参考该文:XML validation for multiple schemas 验证使用多个XSD schema的XML文件

1
0
分享到:
评论

相关推荐

    根据xml schema生成xml

    2. **验证XML文档**:使用XML解析器或者XML Schema处理器(如Java的JAXB、Apache XMLBeans等)来检查XML文档是否符合XSD的定义。验证过程能发现并报告不符合规范的元素或属性。 3. **根据XML Schema生成XML**:在...

    XML Schema教程

    - **在应用程序中使用 XML Schema**:XML Schema 可以用于验证 XML 数据的有效性,确保其符合预期的结构和格式要求。 #### 四、XML Schema 标准 - **XML Schema 是 W3C 标准**:XML Schema 在 2001 年成为了万维网...

    JAXB_Java Architecture For XML Binding

    通过JAXB,开发者可以轻松地在XML文档和Java对象之间进行转换,从而简化了XML处理。 **1. JAXB工作原理** JAXB的工作基于两个主要的概念:XML Schema和Java类之间的映射。首先,XML Schema定义了XML文档的结构和...

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

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

    XMLSchema.chm

    5. **约束和验证**:XML Schema提供了强大的约束机制,包括最大出现次数、最小出现次数、长度、模式匹配等,这些约束用于验证XML文档是否符合Schema的规定。验证过程可以帮助捕获错误,确保数据的准确性和完整性。 ...

    jaxb解析xml

    JAXB 提供了两种方式将 Java 对象绑定到 XML: 1. 通过在 Java 类中标注注解(Annotation)的方式将一个 Java 对象绑定到一段 XML。 2. 使用 JAXB 的 XJC 工具,通过定义 schema 的方式实现 Java 对象与 XML 的绑定...

    [转载] JAXB中Java对象和XML之间的转换

    8. **性能优化**: 对于大规模数据处理,JAXB提供了缓存机制,可以通过`Marshaller.setSchema()`设置XML Schema以进行验证,并提高性能。 9. **使用XPath**: JAXB还允许通过XPath表达式选择XML中的特定部分进行操作...

    JAXB 利用xsd文件生成java类

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

    java处理xml文件

    8. **实战示例:** 创建XML文件,读取XML文件,修改XML文件,验证XML文档,使用XPath查询,以及使用JAXB进行序列化和反序列化等。 以上内容涵盖了Java处理XML文件的核心知识点,包括解析、绑定、转换、验证等各个...

    JAXB XMLSPY

    3. **验证和调试**:能够验证XML文档是否符合指定的Schema,还提供了XML和XSLT的调试器,方便定位并解决问题。 4. **JAXB集成**:支持JAXB绑定,用户可以在XMLSPY中直接操作Java类,进行XML和Java对象之间的转换。 ...

    对xml进行解析;进行增删改查还有schema验证

    3. 验证XML文档:`Validator.validate(Source xmlSource)`方法传入XML文档的`Source`对象进行验证,如`InputStreamSource`或`FileSource`。 四、动态部署示例 动态部署通常涉及在运行时解析XML配置文件,以改变应用...

    jaxb xml 转map

    JAXB的工作原理是基于Java类来生成XML schema,或者反过来基于XML schema生成Java类。当我们有一个XML文档,我们可以创建对应的Java类,这些类将作为映射的基础。然后,JAXB会使用这些类来解析XML并生成相应的对象...

    xml文件转xsd文件

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

    XmlSchema-1.4.7.jar

    2. **XML文档验证**:一旦XML Schema被解析,该库可以验证XML文档是否符合Schema的定义。如果文档违反了Schema的规则,会抛出异常并提供错误信息。 3. **类型系统**:XML Schema定义了一套丰富的内置数据类型,如...

    西工大服务计算实验2-1_XML Schema

    通过这些库,你可以加载XML Schema文件,验证XML文档是否符合Schema定义,也可以根据Schema生成XML文档。 标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和...

    Jaxb2 实现JavaBean与xml互转

    除了JavaBean到XML的转换,JAXB还支持从Java类生成XML Schema(XSD),这在构建Web服务或验证XML文档时非常有用。使用`JAXBContext`的`generateSchema`方法即可生成XSD: ```java SchemaOutputResolver sor = new ...

    java读取xml文件

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

    Java XML绑定技术 (Castor JAXB XMLBeans)

    3. **操作Java类**:使用生成的Java类来创建、读取、修改和验证XML文档。 #### 五、Castor Castor是一个开源的JDO(Java Data Objects)框架,最初设计用于简化JDO的配置。虽然Castor最初并非专为XML绑定设计,但...

    java生成xsd,xml示例

    4. 将Java对象转换为XML:调用`Marshaller.marshal()`方法,将Java对象写入XML文件。 同样,Java也可以反向操作,从XML生成Java对象或XSD。使用Unmarshaller可以将XML数据解析为Java对象,而使用工具如JAXB或XML ...

Global site tag (gtag.js) - Google Analytics