包别名(Package Aliasing)

包别名用于创建XML中类的完全限定名称的别名为新的限定名称。 让我们再次修改我们的示例并更改以下代码。xstream.alias("student", Student.class);

xstream.alias("note", Note.class);

以上代码更改如下 -xstream.aliasPackage("my.company.xstream", "com.iowiki.xstream");

让我们使用XStream测试上面对象的序列化。

在C:\》XStream_WORKSPACE\com\iowiki\xstream创建名为XStreamTester的java类文件。

File: XStreamTester.javapackage com.iowiki.xstream;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.util.ArrayList;

import java.util.List;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.sax.SAXSource;

import javax.xml.transform.sax.SAXTransformerFactory;

import javax.xml.transform.stream.StreamResult;

import org.xml.sax.InputSource;

import com.thoughtworks.xstream.XStream;

import com.thoughtworks.xstream.io.xml.StaxDriver;

public class XStreamTester {

public static void main(String args[]) {

XStreamTester tester = new XStreamTester();

XStream xstream = new XStream(new StaxDriver());

xstream.alias("student", Student.class);

xstream.alias("note", Note.class);

xstream.useAttributeFor(Student.class, "studentName");

xstream.aliasField("name", Student.class, "studentName");

xstream.addImplicitCollection(Student.class, "notes");

Student student = tester.getStudentDetails();

//Object to XML Conversion

String xml = xstream.toXML(student);

System.out.println(formatXml(xml));

}

private Student getStudentDetails() {

Student student = new Student("Mahesh");

student.addNote(new Note("first","My first assignment."));

student.addNote(new Note("second","My Second assignment."));

return student;

}

public static String formatXml(String xml) {

try {

Transformer serializer = SAXTransformerFactory.newInstance().newTransformer();

serializer.setOutputProperty(OutputKeys.INDENT, "yes");

serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

Source xmlSource = new SAXSource(new InputSource(

new ByteArrayInputStream(xml.getBytes())));

StreamResult res = new StreamResult(new ByteArrayOutputStream());

serializer.transform(xmlSource, res);

return new String(((ByteArrayOutputStream)res.getOutputStream()).toByteArray());

} catch(Exception e) {

return xml;

}

}

}

class Student {

private String studentName;

private List notes = new ArrayList();

public Student(String name) {

this.studentName = name;

}

public void addNote(Note note) {

notes.add(note);

}

public String getName() {

return studentName;

}

public List getNotes() {

return notes;

}

}

class Note {

private String title;

private String description;

public Note(String title, String description) {

this.title = title;

this.description = description;

}

public String getTitle() {

return title;

}

public String getDescription() {

return description;

}

}

验证结果

使用javac编译器编译类如下 -C:\XStream_WORKSPACE\com\iowiki\xstream>javac XStreamTester.java

现在运行XStreamTester来查看结果 -C:\XStream_WORKSPACE\com\iowiki\xstream>java XStreamTester

验证输出如下 -<?xml version = "1.0" encoding = "UTF-8"?>

first

My first assignment.

second

My Second assignment.

java 包别名_包别名(Package Aliasing)相关推荐

  1. java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super

    目录点击跳转 包 包的命名方法 导入包中的类 系统包的介绍 **注意事项** 继承 基础知识 构造方法 **基础语法** `protected`修饰符 组合 `this`和`super`关键字 `th ...

  2. java包路径_包java路径

    Java基础07 包 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存 ...

  3. 数据传输服务包年包月_包年包月转按月付费

    关于 包年包月转按月付费的搜索结果 回答 详细解答可以参考官方帮助文档数据传输服务的数据同步及数据订阅功能支持包年包月和按量付费两种模式. 出于成本原因,用户希望将按量付费实例直接转换成包年包月实例, ...

  4. java 重构函数_包会,教你用Java函数式编程重构烂代码

    Java8 由Oracle在2014年发布,是继Java5之后最具革命性的版本. Java8吸收其他语言的精髓带来了函数式编程,lambda表达式,Stream流等一系列新特性,学会了这些新特性,可以 ...

  5. 如何讲页面打入jar包中_如何把我的Java程序变成exe文件?

    JAVA是一种"跨平台"的语言,拥有"一次编写,处处运行"的特点,让它成为当今IT行业,必不可少的一门编程语言. 每一个软件开发完成之后,应该大家都需要打包程序 ...

  6. java怎么导入包语句_java包(package),包导入详解

    之前给大家介绍了一下java包包定义的内容,下面的话,就接着来给大家讲一下包导入的内容,一起来了解一下吧. 假如,使用不同包当中的其他类,就要使用这个类的全名,也就是包名加上类名,下面是代码:exam ...

  7. java 网络抓包_基于java的网络抓包方法

    本实验是用java实现的网络抓包程序,在windows环境下安装winpcap4.0和jpcap6.0后,下载eclipse和jigloo插件(一种在eclipse底下作图形化开发的工具),将其安装好 ...

  8. 解压后java文字乱码_怎么解决java解压zip包出现乱码

    怎么解决java解压zip包出现乱码 发布时间:2020-06-23 09:02:42 来源:亿速云 阅读:107 作者:Leah 怎么解决java解压zip包出现乱码?相信很多没有经验的人对此束手无 ...

  9. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

    当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...

最新文章

  1. python+unittest+excel接口自动化_Python+requests+unittest+excel实现接口自动化测试框架
  2. JVM从入门到精通(一):JVM入门级class文件格式
  3. Equipment upload - ERP inbound的debug
  4. AcWing 1402. 星空之夜 1月28
  5. Bootstrap中的圆角图片效果
  6. 计算图像的直方图,求峰值点
  7. 用javascript缓存ajax数据
  8. JS学习--Number对象
  9. sql用户名数据迁移到mysql_如何将SQL Server数据迁移到MySQL
  10. 查看端口占用情况lsof,并关闭对应进程kill
  11. 范型编程系列二(非原创)
  12. f452虚拟服务器,中兴f452网关,超级用户的密码如何获得,启动路由功能
  13. 企业招聘黑名单的9类人,你中枪了么?
  14. This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively use
  15. html 恶意广告,电脑自动弹出恶意广告怎么处理
  16. Python+Excel系列:批量处理Excel文件的模块—xlwings:创建、保存、打开工作簿,操控工作表和单元格
  17. 【游戏开发实战】(完结)使用Unity制作像天天酷跑一样的跑酷游戏——第七篇:游戏界面的基础UI
  18. 玩股票的人都是接盘侠
  19. 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
  20. IT项目管理-看板管理

热门文章

  1. 大学物理复习笔记——量子物理
  2. 音乐歌单Android,仿网易云音乐歌单界面 Header滑动效果
  3. 学习Flash制作高射炮游戏
  4. 第二证券|钠电池三种技术路线谁更将率先取代锂电池?
  5. Seeding(深度优先遍历)
  6. 纪念第一次ak。。。
  7. 网络--VLAN知识详解
  8. 头歌Python,7号的,作业,
  9. 服务器共享cad修改不了,CAD图纸打开后无法编辑无法修改怎么办
  10. java学习之屌丝逆袭