首页 > 代码库 > java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
package org.rui.io.xml; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.List; import nu.xom.Document; import nu.xom.Element; import nu.xom.Serializer; /** * 序列化到XML中 * 使用xom来产生被转换为xml的Element对象的 person数据 * *http://www.xom.nu/ * XOM虽然也是一种面向对象的XML API,类似于DOM的风格,但是它有一些与众不同的特性,比如严格保持内存中对象的不变性, * 从而使XOM实例总是能序列化为正确的XML。此外,与其他Java XML API相比,XOM追求更简单和更正规。 * * */ public class Person { private String first,last; public Person(String first,String last) { this.first=first; this.last=last; } //转换当前对像为xml public Element getXml() { Element person=new Element("person"); Element firstName=new Element("first"); firstName.appendChild(first); person.appendChild(firstName); Element lastNaem=new Element("last"); lastNaem.appendChild(last); person.appendChild(lastNaem); return person; } ////////////////////////////// public Person(Element person) { first=person.getFirstChildElement("first").getValue(); last=person.getFirstChildElement("last").getValue(); } ////////////////////////////// @Override public String toString() { return "Person [first=" + first + ", last=" + last + "]"; } //////////////////////////////把doc序列化 public static void format(OutputStream os,Document doc) throws Exception { Serializer serializer=new Serializer(os,"ISO-8859-1"); serializer.setIndent(4); serializer.setMaxLength(60); serializer.write(doc); serializer.flush(); } ///////main public static void main(String[] args) throws Exception { //实列对象列表 List<Person> list=Arrays.asList(new Person("Dr.Bunsen","heneydew"), //new Person("东方","不败"), new Person("ddd","ffff"), new Person("kkkk","jjjjj")); System.out.println(list); //构见xml Element root=new Element("people"); for(Person p:list) root.appendChild(p.getXml()); Document doc=new Document(root); format(System.out,doc); //序列化 format(new BufferedOutputStream( new FileOutputStream("people.xml")),doc); } } /** [Person [first=Dr.Bunsen, last=heneydew], Person [first=东方, last=不败], Person [first=kkkk, last=jjjjj]] <?xml version="1.0" encoding="ISO-8859-1"?> <people> <person> <first>Dr.Bunsen</first> <last>heneydew</last> </person> <person> <first>东方</first> <last>不败</last> </person> <person> <first>kkkk</first> <last>jjjjj</last> </person> </people> */
package org.rui.io.xml; import java.io.File; import java.util.ArrayList; import nu.xom.Builder; import nu.xom.Document; import nu.xom.Elements; /** * 反序列化xml * xom的方法都具有相当的自解释性,可以在xom文档中找到它们, * @author lenovo * */ public class People extends ArrayList<Person>{ public People(String fileName) throws Exception { Document doc=new Builder().build(new File(fileName));//打开读取文件 Elements elements=doc.getRootElement().getChildElements(); for(int i=0;i<elements.size();i++) {//转换xml为对象 add(new Person(elements.get(i))); } } public static void main(String[] args) throws Exception { //String path="D:\\Users\\liangrui\\workspace\\thinking/"; //People people=new People(path+"people.xml"); People people=new People("people.xml"); System.out.println(people); } } /** [Person [first=Dr.Bunsen, last=heneydew], Person [first=ddd, last=ffff], Person [first=kkkk, last=jjjjj]] */
package org.rui.io.xml; import java.util.prefs.Preferences; /** * Preferences API 提供一种系统的方法来处理用户的偏好设置信息,例如.保存用户设置, 记住某个文本框的最后一个值等. Preferences 是一个可以为任意名字的键/值对. 值可以为布尔型,字符型, 其他简单的数据类型, 如int. Preferences 通过get和set来获取和设置偏好信息,且get的方法可设置一个默认值,当要获取的键未被设置值时,就返回此默认值. 1.2. 数据的实际存储 数据的实际存储是依赖于操作系统平台的, 例如.在Windows 下面是使用注册表来保存这些信息, 而在Linux下面是使用用户的home目录下面的一个隐藏文件来存储的. 2. API使用 java.util.prefs.Preferences 很容易使用. 你不得不定义一个节点来存储数据. 接下来就可以使用get和set的方法. 第二个参数是默认值,即当找不到值时,得到的就是这个默认值了, 例如. 如果preference的值还未设置, 那么将会返回这个默认值. * @author lenovo * */ public class PerferencesDemo { public static void main(String[] args) throws Exception { Preferences perfs=Preferences.userNodeForPackage(PerferencesDemo.class); perfs.put("location", "0z"); perfs.put("Footwear","Ruby Slippers"); perfs.putInt("Companions",4); perfs.putBoolean("Are there witches?", true); int usageCount=perfs.getInt("UsageCount", 0); usageCount++; //System.out.println(usageCount); perfs.putInt("UsageCount", usageCount); for(String key:perfs.keys()) System.out.println(key+":"+perfs.get(key, null)); System.out.println("How many companions does Dorothy have? "+ perfs.getInt("Companions", 0)); } }/* location:0z Footwear:Ruby Slippers Companions:4 Are there witches?:true UsageCount:5 How many companions does Dorothy have? 4 */
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。