不需要生成dtd,无用配置,不需要生成辅助类,速度快。这就是xstream+xpp超强黄金组合。
xstream大家都知道啦,XML Pull Parser是一种高速的 解析xml文件的方式,速度要比传统方式快很多(发现pull式解析现在比较流行了)。下面我给出多种使用方法的例子。
1.最简单的使用方法
因为这个太简单,所以我从moogle的blog http://moogle.iteye.com/blog/34661取下面的例子
1. public static void write() {
2. XStream sm = new XStream();
3. mytest t = new mytest();
4. t.setName("moogle");
5. t.setXb("男");
6. try {
7. FileOutputStream ops = new FileOutputStream(new File("C:\\111.xml"));
8. sm.toXML(t, ops);
9. ops.close();
10. } catch (Exception e) {
11. e.printStackTrace();
12. }
13. }
14. public static void read() {
15. XStream sm = new XStream(new DomDriver());
16. try {
17. FileInputStream ops = new FileInputStream(new File("C:\\111.xml"));
18. mytest t = (mytest)sm.fromXML(ops);
19. System.out.println(t.getName());
20. ops.close();
21. } catch (Exception e) {
22. e.printStackTrace();
23. }
24. }
生成 XML是
# <mytest>
# <name>asd</name>
# <xb>男</xb>
2.中等方法(需要1.2版以上才有这个功能)
XStream stream = new XStream();
stream.alias("schema", SchemaObject.class);
stream.useAttributeFor("url", String.class);
stream.useAttributeFor("jdbcDriverClass", String.class);
stream.useAttributeFor("user", String.class);
stream.useAttributeFor("password", String.class);
FileOutputStream s = new FileOutputStream(file);
stream.toXML(theObject, s);
s.close();
alias和useAttributeFor是用作把 <com.hongsoft.model.SchemaObject>修改为<schema>
3.高级方法
XStream stream = new XStream();
stream.registerConverter(new SchemaXMLConvertor());
stream.alias("schema", SchemaObject.class);
FileInputStream s = new FileInputStream(file);
object = (SchemaObject) stream.fromXML(s);
s.close();
registerConverter可以实现把任何schema的XML和object互相转换,这个其实已经否定了很多朋友说的
“xstream+xpp”功能不强的说法。SchemaXMLConvertor示例如下:
public void marshal(Object arg0, HierarchicalStreamWriter writer,
MarshallingContext arg2) {
SchemaObject schema=(SchemaObject)arg0;
writer.startNode(SchemaObject.TABLE);
writer.addAttribute(SchemaObject.TABLE_NAME, iTable.getName());
//line
List<SchemaObject.TableObject.LineObject> lines=iTable.getLines();
for(int j=0;j<lines.size();j++)
{
SchemaObject.TableObject.LineObject jLine=lines.get(j);
writer.startNode(SchemaObject.LINE);
//column
Map<String,String> columns=jLine.getColumns();
Iterator ite=columns.keySet().iterator();
while(ite.hasNext())
{
String columnName=ite.next().toString();
writer.addAttribute(columnName, columns.get(columnName));
}
writer.endNode();
}
writer.endNode();
writer.underlyingWriter();
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext arg1) {
SchemaObject schema=new SchemaObject();
schema.setJdbcDriverClass(reader.getAttribute(SchemaObject.JDBC_DRIVER_CLASS));
schema.setUrl(reader.getAttribute(SchemaObject.URL));
schema.setUser(reader.getAttribute(SchemaObject.USER));
schema.setPassword(reader.getAttribute(SchemaObject.PASSWORD));
List<TableObject> tables = new ArrayList<TableObject>();
while(reader.hasMoreChildren()) {
reader.moveDown();
SchemaObject.TableObject table=new SchemaObject().new TableObject();
table.setName(reader.getAttribute(SchemaObject.TABLE_NAME));
tables.add(table);
reader.moveUp();
}
schema.setTables(tables);
return schema;
}
public boolean canConvert(Class arg0) {
return arg0.equals(SchemaObject.class);
}
分享到:
相关推荐
本文档将详细介绍如何使用XStream和Xpp3进行对象到XML的转换,并解决可能出现的问题。 首先,要使用XStream和Xpp3,你需要引入相应的库文件。在本例中,你需要`xpp3-[version].jar`和`xStream-[version].jar`这两个...
XStream库内部使用XPP3作为默认的XML解析器,因为XPP3提供了高效的解析速度。 `xpp3_min-1.1.4c.jar`是XPP3的一个最小化版本,只包含必要的类和方法,以减小库的体积,适合对资源有限的环境,如移动设备或者嵌入式...
标题中的“xstream-1.3.1.jar&xpp3_min-1.1.4c.jar”提及了两个Java库文件,它们分别是XStream 1.3.1版本和XPP3_min 1.1.4c版本。这两个库在Java开发中扮演着重要的角色,特别是对于XML数据的处理和序列化。 ...
在实际使用中,`xstream-1.3.1.jar`文件是XStream的库文件,包含了所有必要的类和方法,可以直接导入到Java项目中使用。为了更好地理解和利用XStream,开发者应深入研究其API文档,学习如何配置转换器,处理嵌套的...
ajax无刷新和无数据库版的javascript+Java+XStream+3级联动+省/市/县 下载即可看效果,非常方便,加上数据库即可进入项目! 宣传一下QQ群:WEB开发性感地带■■ 群号:14622422
1. xstream-1.4.jar:这是XStream的主要库文件,包含了所有必要的类和方法,用于实现XML和Java对象的相互转换。 2. kxml2-2.3.0.jar:这是一个轻量级的XML解析器,常被XStream用来作为XML读写的底层实现。KXML2提供...
在Java项目中,XStream通常与XPP3一起使用,因为XStream依赖于一个XML解析器来读取XML文档。XPP3作为一个高效的XML解析器,是XStream的常用选择。当XStream处理XML数据时,它会利用XPP3解析XML文档,然后进行序列化...
综上所述,"xstream-1.3.jar"和"xpp3_min-1.1.4c.jar"的组合为Java开发者提供了强大且高效的XML序列化和解析工具,简化了XML与Java对象之间的转换,提高了开发效率,同时保持了良好的性能。在实际应用中,它们常被...
2. 创建一个`XStream`实例,可以通过提供一个`HierarchicalStreamDriver`实例来定制XML解析器的行为,例如使用XPP3驱动器: ```java XStream xstream = new XStream(new XppDriver()); ``` 3. 定义XML到Java对象...
本文将深入探讨XStream 1.4.2中的核心特性、使用方法以及常见应用场景。 一、XStream的核心特性 1. **简单的API**:XStream的核心设计理念就是简洁易用,它的API设计使得对象序列化和反序列化的过程直观而直接,...
"xstream.jar及其他依赖jar包"是解决这一问题的重要工具,它包括了xstream-1.4.10.jar、xpp3-1.1.4c.jar和xmlpull_1_0_5.jar这三个文件。这些jar包提供了全面的Java对象到XML以及XML到Java对象的转换功能,简化了...
### Xstream使用说明 #### 一、Xstream简介 ...以上介绍了Xstream的基本使用方法以及一些高级特性。Xstream的强大之处不仅在于其简单易用,还在于其灵活性和扩展性,能够适应各种复杂的序列化需求。
XStream-1.4.2可能是一个稳定且广泛使用的版本,对于那些需要处理XML与Java对象之间转换的项目来说,它是一个可靠的选择。 标签"xstream.jar"明确了这是一个Java档案(JAR)文件,通常包含Java类、资源和其他相关...
例如,你可以直接使用`XStream.fromXML(String xml)`方法将XML字符串转化为Java对象,反之亦然。 2. **dom4j.jar**: DOM4J是一个非常灵活的用于处理XML的Java库,它是基于DOM(Document Object Model)模型的,但...
XPP3(XML Pull Processing)是XML解析的一种方法,它不同于DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析器将整个XML文档加载到内存中,形成一个树形结构,便于遍历和操作;SAX则采用事件驱动...
本文将深入探讨XStream的使用以及其依赖包xpp3_min-1.1.4c.jar和xstream-1.3.1.jar的相关知识点。 首先,我们来了解核心组件xstream-1.3.1.jar。XStream的核心功能是提供了一种直观的方式来将Java对象转换为XML,并...
例如,你可以使用XMLPull或XPP3来解析XML输入流,然后通过XStream将解析得到的数据对象化,进一步处理或存储。在移动开发、Web服务、数据交换等场景下,这样的组合非常实用。对于Java开发者来说,理解和掌握这些库是...
xpp3_min-1.1.4c, xstream 使用
这个实例将深入探讨如何使用XStream进行XML操作。 **1. XStream简介** XStream是一个开源库,由Joe Walnes创建,它提供了Java对象到XML和XML到Java对象的直接映射。它的主要优点是其简洁的API和易于理解的输出。...
2. **初始化 XStream**: 创建 `XStream` 实例,通常建议使用 `XStream(xmlDriver)` 初始化,其中 `xmlDriver` 可以是 `JDOMDriver` 或 `DomDriver` 等。 3. **注册转换器**: 如果需要处理自定义类型,可能需要注册...