接上文 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文件
分享到:
相关推荐
2. **验证XML文档**:使用XML解析器或者XML Schema处理器(如Java的JAXB、Apache XMLBeans等)来检查XML文档是否符合XSD的定义。验证过程能发现并报告不符合规范的元素或属性。 3. **根据XML Schema生成XML**:在...
- **在应用程序中使用 XML Schema**:XML Schema 可以用于验证 XML 数据的有效性,确保其符合预期的结构和格式要求。 #### 四、XML Schema 标准 - **XML Schema 是 W3C 标准**:XML Schema 在 2001 年成为了万维网...
通过JAXB,开发者可以轻松地在XML文档和Java对象之间进行转换,从而简化了XML处理。 **1. JAXB工作原理** JAXB的工作基于两个主要的概念:XML Schema和Java类之间的映射。首先,XML Schema定义了XML文档的结构和...
在Java中,XML Schema(XSD)用于定义和验证XML文档的结构和数据类型,确保文档遵循特定的规范。XML Schema文档使用XML语法定义了一系列规则,这些规则描述了有效XML文档应该具有的元素、属性、数据类型以及它们之间...
5. **约束和验证**:XML Schema提供了强大的约束机制,包括最大出现次数、最小出现次数、长度、模式匹配等,这些约束用于验证XML文档是否符合Schema的规定。验证过程可以帮助捕获错误,确保数据的准确性和完整性。 ...
JAXB 提供了两种方式将 Java 对象绑定到 XML: 1. 通过在 Java 类中标注注解(Annotation)的方式将一个 Java 对象绑定到一段 XML。 2. 使用 JAXB 的 XJC 工具,通过定义 schema 的方式实现 Java 对象与 XML 的绑定...
8. **性能优化**: 对于大规模数据处理,JAXB提供了缓存机制,可以通过`Marshaller.setSchema()`设置XML Schema以进行验证,并提高性能。 9. **使用XPath**: JAXB还允许通过XPath表达式选择XML中的特定部分进行操作...
在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) 文件来生成对应的Java类,从而简化XML处理的工作流程。 1. **XML Schema (XSD) 文件**: - XML Schema是一种W3C标准,用于定义XML文档的...
8. **实战示例:** 创建XML文件,读取XML文件,修改XML文件,验证XML文档,使用XPath查询,以及使用JAXB进行序列化和反序列化等。 以上内容涵盖了Java处理XML文件的核心知识点,包括解析、绑定、转换、验证等各个...
3. **验证和调试**:能够验证XML文档是否符合指定的Schema,还提供了XML和XSLT的调试器,方便定位并解决问题。 4. **JAXB集成**:支持JAXB绑定,用户可以在XMLSPY中直接操作Java类,进行XML和Java对象之间的转换。 ...
3. 验证XML文档:`Validator.validate(Source xmlSource)`方法传入XML文档的`Source`对象进行验证,如`InputStreamSource`或`FileSource`。 四、动态部署示例 动态部署通常涉及在运行时解析XML配置文件,以改变应用...
JAXB的工作原理是基于Java类来生成XML schema,或者反过来基于XML schema生成Java类。当我们有一个XML文档,我们可以创建对应的Java类,这些类将作为映射的基础。然后,JAXB会使用这些类来解析XML并生成相应的对象...
将XML文件转换为XSD文件,主要是为了更好地管理和验证XML文档的结构,确保数据的一致性和准确性,同时也便于生成对应的Java类,以进行程序开发。 在Java开发中,经常需要处理XML数据。有了XSD文件,开发者可以使用...
2. **XML文档验证**:一旦XML Schema被解析,该库可以验证XML文档是否符合Schema的定义。如果文档违反了Schema的规则,会抛出异常并提供错误信息。 3. **类型系统**:XML Schema定义了一套丰富的内置数据类型,如...
通过这些库,你可以加载XML Schema文件,验证XML文档是否符合Schema定义,也可以根据Schema生成XML文档。 标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和...
除了JavaBean到XML的转换,JAXB还支持从Java类生成XML Schema(XSD),这在构建Web服务或验证XML文档时非常有用。使用`JAXBContext`的`generateSchema`方法即可生成XSD: ```java SchemaOutputResolver sor = new ...
本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 DTD(Document Type Definition)验证。 首先,我们需要了解 Java 中用于解析 XML 的主要库:JAXB (Java Architecture for XML Binding) 和 DOM ...
3. **操作Java类**:使用生成的Java类来创建、读取、修改和验证XML文档。 #### 五、Castor Castor是一个开源的JDO(Java Data Objects)框架,最初设计用于简化JDO的配置。虽然Castor最初并非专为XML绑定设计,但...
4. 将Java对象转换为XML:调用`Marshaller.marshal()`方法,将Java对象写入XML文件。 同样,Java也可以反向操作,从XML生成Java对象或XSD。使用Unmarshaller可以将XML数据解析为Java对象,而使用工具如JAXB或XML ...