我现在有一个XML文件,如下:
<?xml version="1.0" encoding="UTF-8"?>
<InstructionFileBean xmlns:n="http://www.hw.cn/pool"
xmlns="http://www.hw.cn">
<InstructionBeans>
<InstructionCode>liu</InstructionCode>
<FunAndSerach>
<code>yi</code>
</FunAndSerach>
</InstructionBeans>
<InstructionBeans>
<InstructionCode>liu</InstructionCode>
<FunAndSerach>
<code>er</code>
</FunAndSerach>
</InstructionBeans>
</InstructionFileBean>
现在通过castor解组,
mapping.xml文件如下:
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.org/mapping.dtd">
<mapping>
<class name="FunAndSerach">
<map-to xml="FunAndSerach" />
<field name="code" type="java.lang.String">
<bind-xml name="code" node="element"/>
</field>
</class>
<class name="InstructionBean">
<map-to xml="InstructionBean" />
<field name="instructionCode" type="java.lang.String">
<bind-xml name="InstructionCode" node="element"/>
</field>
<field name="instructionDomin" type="InstructionDomin">
<bind-xml name="instructionDomin" auto-naming="deriveByClass" node="element"/>
</field>
</class>
<class name="InstructionFileBean">
<map-to xml="InstructionFileBean"/>
<field name="instructionBeans" type="InstructionBean" collection="arraylist">
<bind-xml name="InstructionBeans" node="element"/>
</field>
</class>
</mapping>
在解组时得不到对像,
public class InstrUnmarshaller {
public static void main(String[] args) {
Mapping mapping = new Mapping();
try {
/**
* Unmarshaller unmar = new Unmarshaller(mapping);
MyOrder order = (MyOrder) unmar.unmarshal(new InputSource(
new FileReader("order.xml")));
*/
mapping.loadMapping("instruction_map.xml");
//mapping.loadMapping("author_map.xml");
//XMLContext context = new XMLContext();
//context.addMapping(mapping);
//Unmarshaller unmarshaller = context.createUnmarshaller();
Unmarshaller unmarshaller = new Unmarshaller(mapping);
unmarshaller.addNamespaceToPackageMapping("http://www.szse.cn/pool", "n");
unmarshaller.addNamespaceToPackageMapping("http://www.szse.cn/", "");
//unmarshaller.setProperty("xmlns", "http://www.w3.org/TR/html4/");
//FileReader reader = new FileReader(new File("D:\\digitnexus\\castor\\bookdata.xml"));
FileReader reader = new FileReader("map_marshaller.xml");
InstructionFileBean book = (InstructionFileBean) unmarshaller.unmarshal(reader);
List<InstructionBean> authors = book.getInstructionBeans();
for (Iterator<InstructionBean> i = authors.iterator(); i.hasNext();) {
InstructionBean author = (InstructionBean) i.next();
System.out.println("Author: " + author.getInstructionCode() + " "
+ author.getInstructionDomin().getClass().getSimpleName());
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace(System.err);
}
}
}
分享到:
相关推荐
当你遇到“castor无法解组”的问题时,可能涉及以下几个方面: 1. **配置问题**:Castor 需要相应的配置文件来知道如何映射XML数据到Java对象。如果缺少或者配置文件有误,可能会导致解组失败。检查`castor.xml`或`...
解决Castor在处理无根节点XML时的问题,通常需要以下几个步骤: 1. **创建根节点**:首先,你需要确保你的XML文档有一个明确的根元素。根元素是XML文档中的顶级元素,所有其他元素都应嵌套在它之下。例如,你可以...
10. **社区支持**:作为开源项目,Castor有一个活跃的社区,提供持续的更新和维护,以及丰富的文档和示例,帮助开发者解决问题。 在实际应用中,你可以利用Castor进行以下操作: - 将Java对象序列化为XML文件,用于...
- 解组(Unmarshalling)是反向过程,即从XML文档中提取数据并创建或填充Java对象。这通常通过`Unmarshaller`接口实现。 4. **模式之间的映射**: - 在处理XML时,Castor支持多种XML Schema(XSD)模式。映射文件...
最后,文档的1.10节提供了一个XML相关的FAQ列表,解答了关于Castor的常见问题,包括XML的内省、映射、序列化、源代码生成等问题。 综上所述,Castor文档涵盖了从基本使用到高级配置再到最佳实践的广泛知识点。它为...
1. 类结构:了解Castor的主要类和接口,如Marshaller、Unmarshaller、Mapping和Store,它们在对象-XML转换和数据库交互中的角色。 2. XML处理:查看Castor如何解析XML文档,以及如何生成XML结构。 3. ORM实现:...
Castor是一个开源的数据绑定框架,它允许Java开发者在Java对象和XML之间进行无缝转换。这个强大的工具能够将复杂的Java对象模型映射到XML文档,同时也能够将XML数据解析回等效的Java对象,极大地简化了Java应用中的...
9. **学习资源**:为了深入学习和使用Castor,可以查阅官方文档、在线教程和论坛讨论,以获取示例代码和常见问题解答。 通过以上知识点,我们可以了解到,Castor 1.4版本为XML Schema到Java类的转换提供了一个高效...
import org.exolab.castor.xml.Unmarshaller; // 创建并填充User对象 User user = new User(); // ... // 序列化 Marshaller marshaller = new Marshaller(new FileOutputStream("user.xml")); marshaller.marshal...
Castor是Java开发中的一款强大的数据绑定框架,它允许开发者在Java对象、XML文档、SQL数据库表以及LDAP目录之间进行无缝的数据转换。这个"castor1.3 完整jar包"包含了Castor库的1.3rc1版本,便于开发者直接引入到...
Castor是一个开源的Java库,它提供了一个强大的框架,用于在Java对象和XML...通过定义映射文件和使用Castor的Marshaller和Unmarshaller,你可以轻松地在两种数据格式之间切换,这对于数据交换、存储或传输非常有用。
另外,不同版本的Castor可能存在兼容性问题,因此在升级或降级版本时需要谨慎测试。 总之,Castor是一个功能丰富的数据绑定框架,适用于那些需要频繁进行Java对象与XML转换的项目。通过合理使用,可以极大地提高...
Castor是一个Java库,它提供了一种方便的方式来映射XML数据到Java对象,反之亦然。这个工具在处理XML文档时特别有用,因为它允许开发者通过简单的对象操作来处理复杂的XML结构,而无需直接处理XML语法。本文将深入...
此外,由于 Castor 的维护不如其他一些库活跃,可能会遇到一些现代Java和XML规范的兼容性问题。 总结来说,Castor是一个实用的工具,尤其适合那些需要快速开发并处理XML的项目。通过理解其核心原理和熟练掌握其API...
Castor是一个开源Java库,主要用于XML到Java对象的映射(XML Binding)和Java到XML的转换。在Eclipse这样的集成开发环境中,Castor插件的集成极大地简化了数据绑定的过程,使得开发者能够轻松地在Java类和XML文档...
- **学习与调试**:拥有源代码意味着开发者可以直接查看和理解内部实现,有助于学习Castor的工作原理,也可以在遇到问题时进行调试。 - **自定义扩展**:如果需要对Castor进行定制或添加特定功能,源代码提供了...
Castor,全称为Java Object/Relational Mapping (ORM) Project,是一个开源的Java库,它提供了对象关系映射(ORM)的功能,使得开发者可以将Java对象的数据映射到数据库的表结构上,反之亦然。这极大地简化了数据库...
然后,你可以通过Castor提供的API来执行持久化操作,如`Marshaller`和`Unmarshaller`用于XML序列化和反序列化,`Session`接口用于数据库操作。 总的来说,Castor是一个强大的工具,它简化了Java开发中的数据持久化...
7. **异常处理**:在操作过程中,可能会遇到如数据不匹配、格式错误等问题,例子可能展示了如何捕获并处理这些异常。 8. **自定义转换**:有时,标准的Castor映射可能无法满足特定需求,你可能需要创建自定义的转换...