① java输出xml文件
root.element("time").setText("测试");这句是否有误?
root.element("time").getFirstChild().setText("测试");试试看
② C#中将html转换为xml的实现
我给你些我的建议吧
HTML的语法格式比XML宽松多了,真正XML格式的网页是XHTML,也就是下一代HTML,他的格式和XML差不多,很严谨的。
如果你不想利用某些HTML和XML互转工具,自己编的话,有一定难度。
1.HTML的节点可以没末节点,你需要不停扫描<,>,/,这三个符号以检查是否漏掉末节点,并补充。
2.HTML节点还可以不规则嵌套,你需要对已读入节点进行顺序存储,或用栈的数据结构来存储,并验证其层次正确性,最终正确顺序的节点,期间还得缓存节点值,或属性值。
3.HTML不同于XML,许多HTML节点有特殊的意义,许多HTML节点比如<b>,<hr/>都需要经过特殊处理才行。
在技术上,为保证性能,还要在一下方面有加强。
1.强大的字符串扫描,和解析器,此工作也巨大,但网上源码很多,建议到google英文里搜索,HTML parser,XML parser(解析器),有很多c#,java,c++的源代码可以利用,没有强大的解析器,跟本无法读懂文件。
2.System.Xml空间的详细运用,除了简单的XMLWriter,还必须学会XMLDocument,XmlNode,能够动态操控XML。还有Xpath技术,操作XMl很有效率。
3.适当还会运用到正则表达式,来处理字符串匹配问题,尤其是节点的操作,即使是再好的字符串查找算法,有时也不如正则表达式,因此system.Text 中的Regex类要掌握好。
4.会控制WinForm中的WebBrower控件
当然,即使你不打算自己做,或已找到了源代码,要想读懂,也必须要以上的知识。
至于工具,网上有,源码还哪找,有java的,但下载不下来。
这是着名的W3C(Html,xml等技术的创始组织)的转换工具,里面也有一些介绍,相信会有用的。
http://www.w3.org/People/Raggett/tidy/
有一个用C#编的转换器,但付费后才可看到源代码
http://www.chilkatsoft.com/downloads.asp
http://www.example-code.com/csharp/html2xml.asp
还有一些软件,stylus的产品不错!
http://www.stylusstudio.com/html_to_xml_importer.html
③ 如何用java封装解析一个多层次的XML文件,急求大神帮助
下面提供了XML解析成实体类,以及实体类转换成xml的方法。
public class SwitchXML {
private XStream xStream = new XStream();
private String xmlPath = "D:/data.xml";
// 1. obj -> xml(object类型转换为xml类型)
public String printXML(User user) {
System.out.println("obj -> xml");
String xml = xStream.toXML(user);
System.out.println(xml);
return xml;
}
// 2. xml->obj(xml类型转换为object类型,并打印)
public void printObj(String xml) {
System.out.println("xml -> obj");
User u = (User) xStream.fromXML(xml);
System.out.println(u.getUserName() + " " + u.getPassWord() + " " + u.getRegisteredTime());
}
// 3. 将object类型转换为xml类型,并写入XML文件(其他格式也可以,比如txt文件)
public void writerXML(User user) {
try {
FileOutputStream fs = new FileOutputStream(xmlPath);
xStream.toXML(user, fs);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// 4. 读取XML文件,加载进相应Object类型
public void readerXML() {
User user = new User();
FileInputStream fis = null;
try {
fis = new FileInputStream(xmlPath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
xStream.fromXML(fis, user);
// 打印对象信息
System.out.println(user.toString());
// 打印对象的属性值
System.out.println(user.getUserName() + "-" + user.getPassWord() + "-"
+ user.getRegisteredTime());
}
public static void main(String[] args) {
// 用户名
String username = "admin";
// 密码
String password = "admin";
// 注册时间
Date now = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
String registeredtime = format.format(now);
User user = new User(username, password, registeredtime);
SwitchXML switchXML = new SwitchXML();
// 1. object类型转换为xml类型,在控制台打印
String xml = switchXML.printXML(user);
System.out.println("---------------------");
// 2. xml类型转换为object类型,在控制台打印
switchXML.printObj(xml);
System.out.println("---------------------");
// 3. 将object类型转换为xml类型,并写入XML文件
switchXML.writerXML(user);
System.out.println("---------------------");
// 4. 读取XML文件,加载进相应Object类型
switchXML.readerXML();
}
④ java如何组装xml报文
可以用 我给你的方式组合xml报文
⑤ 如何用Java实现对xml文件的读取和写入以及保存
直接附源码import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.*;
import org.dom4j.io.XMLWriter;
public class Dom4jSample { public static void main(String[] args) {
Dom4jSample dom4jSample = new Dom4jSample();
Document document = dom4jSample.createDocument();
try{
dom4jSample.FileWrite(document);
Document documentStr = dom4jSample.StringToXML("<China>I Love!</China>");
dom4jSample.XMLWrite(documentStr);
Element legend = dom4jSample.FindElement(document);
System.out.println(legend.getText());
}
catch(Exception e)
{
}
}
/*
* Create a XML Document
*/
public Document createDocument()
{
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element author1 = root.addElement("Lynch");
author1.addAttribute("Age","25");
author1.addAttribute("Country","China");
author1.addText("I am great!");
Element author2 = root.addElement("Legend");
author2.addAttribute("Age","25");
author2.addAttribute("Country","China");
author2.addText("I am great!too!");
return document;
}
/*
* Create a XML document through String
*/
public Document StringToXML(String str) throws DocumentException
{
Document document = DocumentHelper.parseText(str);
return document;
}
public Element FindElement(Document document)
{
Element root = document.getRootElement();
Element legend = null;
for(Iterator i=root.elementIterator("legend");i.hasNext();)
{
legend = (Element)i.next();
}
return legend;
}
/*
* Write a XML file
*/
public void FileWrite(Document document) throws IOException
{
FileWriter out = new FileWriter("C:/Dom2jSample.xml");
document.write(out);
out.close();
}
/*
* Write a XML format file
*/
public void XMLWrite(Document document) throws IOException
{
XMLWriter writer = new XMLWriter(new FileWriter("C:/Dom2jSampleStr.xml"));
writer.write(document);
writer.close();
}
}
⑥ XML和JAVA是什么
正象HTML一样,可扩展置标语言XML(eXtensible Markup Language)也是一种置标语言。它同样依赖于描述一定规则的标签和能够读懂这些标签的应用处理工具来发挥它的强大功能。这一点,从XML的命名上也可窥见一斑。
“关于此规范的正确题目,亦即XML的正确全名,应该是Extensible Markup Language, eXtensible Markup Language只不过是一个拼写错误罢了。但是,现在简写XML不仅正确,而且正如它在本规范的标题中一样,是Extensible Markup Language的官方名称。
这个名称和简写是由James Clark最先提出的,其它可供选择的名称还包括小型标准置标语言MGML (Minimal Generalized Markup Language), 标准置标语言的小型结构MAGMA (Minimal Architecture For Generalized Markup Applications), 以及互联网置标结构语言SLIM (Structured Language for Internet Markup)。
——Extensible Markup Language (XML) 1.0 Specs, The Annotated Version. ”
从对XML的最初命名可以看出,XML的核心归根结底还是置标。不过,XML这个置标语言可比HTML的功能要强大的多了。
“人”如其名,XML的强大功能来自于“X”。也就是说,XML不但是置标语言,而且是可扩展的(eXtensible)置标语言。XML并非象HTML那样,提供了一组事先已经定义好了的标签,而是提供了一个标准,利用这个标准,你可以根据实际需要定义自己的新的置标语言,并为你的这个置标语言规定它特有的一套标签。准确的说,XML是一种源置标语言,它允许你根据它所提供的规则,制定各种各样的置标语言。这也正是XML语言制定之初的目标所在。
“XML的制定目标为:
XML应该可以在互联网上直接使用(*就象HTML那样好用)。
XML应该支持各种不同的应用方式(*不但包括浏览,还包括对内容的分析)。
XML应该与SGML兼容(*子承父业嘛,后面我们会讲到,SGML是XML的直接先驱)。
处理XML文件的应用程序应该容易编写(*计算机系的研究生花上两周的工夫就该差不多了)。
XML中的可选特性的数量应该减到最小,最好减至没有(*可选特性经常造成混淆)。
XML文件应该具有良好的可读性,并且比较清晰(*别象HTML那样,如果不借助浏览器,要想读它简直就是对你意志力和耐心的考验)。
用XML设计新的置标语言应该方便快捷(你不必再去经历标准制定的繁琐程序了)。
XML设计的置标语言应该正式、简洁(不然怎么易写易读?)。
XML文件应该容易编制(想想要用“记事本”写个HTML是一件多么可怕的工作)。
XML标记的简洁性并不重要(你不必再去费尽心机减少标记)。
——Extensible Markup Language (XML) 1.0 Specs, The Annotated Version.”
JAVA介绍
一、前言
‘Java’从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和多 媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计 算机(PC)的关系。那Java究竟有那些特色呢?
Java是一种软件技术
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
是一种为 Internet发展的计算机语言
是一种使网页(Web Page)产生生动活泼画面的语言
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
是一种语言,用以产生“小应用程序(Applet(s))”
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
是一种将安全性(Security)列为第一优先考虑的语言
是一种使用者不需花费很多时间学习的语言
是一种突破用户端机器环境和CPU结构的语言
是一种“写一次,即可在任何机器上执行(Write OnceRun Anywhere)”的语言是有史以来,第一套允 使用者将应用程序(Applications)通过Internet从远端的服务器(Remote Server)传输到本地端的机器 上(LocalMachine)并执行
是一种应用程序提供者不需要知道使用者的计算机硬件(如:Sun, Intel, 或MAC等)与软件(如:SW- UNIX, MAC O/S, Windows, 或NT等)环境的语言(Kestenbaum, 1995)。
下面将依序地介绍Java,首先是Java的发展历史与Java语言介绍,其次依序是Java Applet和HotJava的简单介绍。
二、Java FAQ
下面以问答的方式来说明Java的发展历史与其背景(下列内容整理自 Java FAQ list and Tutorial和The Java Language: A White Paper,读者若欲深 入了解,请自行参阅原文):
Java何时开始发展?(When)
最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品(Consumer Electronics),所使用的语言是C、C++、及Oak (为Java语 言的前身),后因语言本身和市场的问题, 使得消费性电子产品的发展无法达到当初 预期的目标,再加上网络的兴起, 绿色计划也因此而改变发展的方向,这已是1994 年了。
为何称之为Java?(Why) "Java"是美国SUN计算机公司Java发展小组历经无数次的激烈讨论之后才被选择出。 生动(Liveliness)、动画(Animation)、速度(Speed)、交互性(Interactivity)为当 初选择名字时所欲表达出的特色。"Java"是在无数的建议中脱颖而出的,而"Java" 不是由几个单字的首字所组成, 而是从许多程序设计师钟爱的热腾腾、香浓咖啡中 产生灵感的。
谁开发了Java?(Who) Java是美国SUN计算机公司Java发展小组开发的,早期的成员(绿色工程)是Patrick Naughton, James Gosling, & Mike Sheridan,而现在大家较为熟悉的成员是James Gosling。
在那里开发了Java?(Where)
也就是问Java的出生地?答案是美国。
如何可以找到所需的Java信息?(How to)
在网路上,您可以连到Sun公司的Java WWW网站,URL是http://java.sun.com/,或是 http://www.javasoft.com/。在那里几乎可以找到您所需要的所有Java信息,但是语 言多少是一个障碍, 至少对某些人而言;没关系,目前国内已有很多个网站提供中文 Java信息。在清华和中科院的FTP站点上有不少有关资料。想象以后应会有更多的站点提供相关信息。
如何才能看到Java的效果?(How Do I)
首先您需要有含有Java解释器的浏览器(Browser),例如:Netscpae公司的Netscape Navigator 2.0以上或是Sun公司的HotJava浏览器,对个人计算机使用者而言,操作 系统需是Windows 95或是Windows NT。
Java是因为撰写C++语言程序时的困难而研制开的,起先,只是一个消费性电子产品 大计划中的一部份,C++语言是当初被考虑采用的,但从一开始的编译问题一直到最 后的一连串问题迫使得放弃C++语言,而有Java语言的产生。Sun是要Java成为一个简 单(Simple)、面向对象的(Object Oriented)、 分布式的(Distributed)、解释的(Interpreted)、健壮的(Robust)、安全的(Secure)、 结构中立的(Architecture Neutral)、可移植的(Portable)、高效能的(High Performance)、多线程的(Multithreaded)、动态的(Dynamic)的程序语言(摘译自 TheJava Language: A White Paper, 1995)。
在Sun的Java语言白皮书中明白地说明上述Java语言的技巧。若以木工为比喻,一个面 向对象的木工,他(她)最主要的重点是即将要做的木椅子,其次才是所需要的工具; 反之;一个以非面向对象的木工,他(她)所关心的只是工具。最近的即插即用(Plug and Play)亦是面向对象设计的重点。 分布式的(Distributed):Java有一个很周全的程薪录JAVA介绍 。
一、
‘Java’从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和 多媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计 算机TTP和FTP等TCP/IP通讯协定相配合。Java应用程序(Applications) 能在网路上开启及连结使用物件,就如同透过URLs连结使用一个本地文件系统(Local File System)。 健壮的(Robust):由Java所编写出的程序能在多种情况下执行而具有其稳定性。Java与 C/C++最大不同点是Java有一个指针模型(Pointer Model)来排除内存被覆盖(Overwriting Memory)和毁损数据(Corrupting Data)的可能性。
安全的(Secure):Java是被设计用于网络及分布式的环境中,安全性自必是一个很 重要的考虑。Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病 毒的侵入和破坏行为的发生。
结构中立的(Architecture Neutral):一般而言,网络是由很多不同机型的机器所 组合而成的,CPU和作业系统体系结构均有所不同;因此,如何使一个应用程序可以 在每一种机器上执行,是一个难题。所幸,Java的编译器产生一种结构中立的目标 文件格式(Object File Format);这使得编译码得以在很多种处理器中执行。
可移植的(Portable):原始资料型式的大小是被指定的,例如"float"一直是表示一 个32位元IEEE 754浮点运算数字,因绝大多数的CPU都具有此共同特征。程序库属于 系统的一部份,它定义了一些可移植的程序接口,Java本身具备有很好的可移植性。
解释的(Interpreted):Java解释器能直接地在任何机器上执行Java位元码(Bytecodes), 因此在进行程序连结时,时间的节省,这对于缩短程序的开发过程,有极大的帮助。
高效能的(High Performance):Java位元码迅速地能被转换成机器码(Machine Code), 从位元码转换到机器码的效能几乎与C与C++没有分别。
多线程的(Multi threaded):Java语言具有多线程的功能,这对于交互回应能力及 即时执行行为是有帮助的。
动态的(Dynamic):Java比C或C++语言更具有动态性,更能适应时刻在变的环境, Java不会因程序库的更新,而必须重新编译程序。
此外,Hank Shiffman (Making Sense of Java)亦针一般对Java的错误看法及观 念提出他的说明,特在此摘译如下:
"Java是一种编写Web Pages的一种语言,就如同HTML和VRML一样" 事实上,Java并不像是HTML此一类的描述语言(Description Language),而是一种 编程语言(Programming Language)。描述语言标明内容和位置,而编程语言描述一 种产生结果的过程。
2. "Java语言容易学习和使用,不像C、C++和其它程序语言"
Java是一种编程语言。Java容易学吗?Java或许是比C或C++容易学,但仍是一种编程语言,而不是一种描述语言。
3. "Java码是可移植的,但C及C++不是"
Java原代码(Source Code)是比C语言来得可移植一点,差别在于Java的目标码。 Java码在一种机器上进行编译,而能在所有的机器上执行, 只要那部机器上有 Java解释器。
4. "Java能被拓展而在机器上执行任何事情"
理论上,Java Applet (Java小应用程序)能做任何事情,如模拟3D VRML模型、播放电影、产生音频....等。但事实上,一个小应用程序(Applet)仅能在那一页上被执行,而无法在那一页之外执行。同时,Java亦受限于程序库的功能。
5. "Java是适合于建立大型的应用程序"
如果Java适合于大型程序,则Java就不适合应用于Web浏览器了。第一个商业 性的Java Applets (Applix's Java-Based Spreadsheet) 并不是全然使用Java, 它只使用Java作为用户接口,而所有的处理工作, 是用CGI码。
6. "Java是解释执行的,Basic是解释执行的,因此Java=Basic"
虽然Java的确是使用解释器,但事实上,Java则与C或C++等完全编译语言较为相近,但与Basic或APL等完全解译语言较不相近。
7. "Java删除了CGI命令稿(Scripts)和程序的需求"
Java Applets将会取代部份CGI的用途。在有些情况,Java Applets能够取代一些服务器端代码(Server-Side Code),但大多数的情况,基于安全性理由或是效 能的考虑,Java仍无法全然取代CGI Scripts。
8. "Netscape's JavaScript是与Java有相关"
除了名称之外,Java和JavaScript是有一点点相关。JavaScript是一种命令稿语 言,是可以在HTML页中使用。Java码并未出现在HTML中,而在HTML中通过一个链 结来链结编译码组。Java和JavaScript之间的关系就如同C语言和C Shell一般。
⑦ 字符串在java类中怎么转换成xml文件
JXmlSerializable 是一个利用java反射,通过调用对象中所有以get(不区分大小写)开头的方法除去getClass方法,生成xml格式,希望与大家分享一下
下面是一个parent对象,包含两个child对象 生成的xml如下
Child类
1package xmlTest;
2
3import java.io.FileNotFoundException;
4import java.io.IOException;
5import java.io.PrintWriter;
6import java.lang.reflect.InvocationTargetException;
7public class Child extends JXmlSerializable {
8
9 private String _name;
10 private String _sex;
11 private int age;
12
13 public void setAge(int num) {
14 age = num;
15 }
16
17 public int getAge() {
18 return age;
19 }
20
21 public void setName(String name) {
22 _name = name;
23 }
24
25 public void setSex(String sex) {
26 _sex = sex;
27 }
28
29 public String getName() {
30 return _name;
31 }
32
33 public String getSex() {
34 return _sex;
35 }
36
37}
38
Parent类 1package xmlTest;
2
3import java.io.PrintWriter;
4import java.lang.reflect.Array;
5import java.util.*;
6
7public class Parent extends JXmlSerializable {
8
9 private String _name;
10 private String _sex;
11 private LinkedList list = new LinkedList();
12 private Vector vec = new Vector();
13 int age;
14
15 public void setAge(int num) {
16 age = num;
17 }
18
19 public int getAge() {
20 return age;
21 }
22
23 public void setName(String name) {
24 _name = name;
25 }
26
27 public void setSex(String sex) {
28 _sex = sex;
29 }
30
31 public String getName() {
32 return _name;
33 }
34
35 public String getSex() {
36 return _sex;
37 }
38
39 public void addChild(Child child) {
40 list.add(child);
41 vec.add(child);
42 }
43
44 public Child[] getChild() {
45
46 Child[] aa = new Child[vec.size()];
47 // list.toArray(aa);
48 vec.toArray(aa);
49 return aa;
50 }
51
52 public static void main(String[] args) {
53 // TODO Auto-generated method stub
54 try {
55 Parent pat = new Parent();
56 pat.setName("jack");
57 pat.setSex("male");
58 Child child1 = new Child();
59 child1.setName("tom");
60 child1.setSex("male");
61 pat.addChild(child1);
62 Child child2 = new Child();
63 child2.setName("Marie");
64 child2.setSex("female");
65 pat.addChild(child2);
66 pat.getChild();
67 PrintWriter out = new PrintWriter("abc.xml");
68 pat.toXmlSerial(out,0);
69 out.flush();
70
71 } catch (Exception e) {
72 e.printStackTrace();
73 }
74
75 }
76}
类 JXmlSerializable
1package xmlTest;
2
3import java.lang.reflect.Method;
4import java.lang.reflect.InvocationTargetException;
5import java.lang.reflect.Array;
6import java.io.PrintWriter;
7import java.io.IOException;
8public class JXmlSerializable {
9
10 public void toXmlSerial(PrintWriter out, int num)
11 throws InvocationTargetException, IllegalAccessException,
12 IOException {
13 out.write("<?xml version="1.0"?> ");
14 String head = "";
15 for (int i = 0; i < num; i++) {
16 head += " ";
17 }
18 out.write(head + "<" + this.getClass().getName() + "> ");
19 Method[] methods = this.getClass().getMethods();
20 for (int i = 0; i < methods.length; i++) {
21 Class[] paras = methods[i].getParameterTypes();
22 String name = methods[i].getName();
23 if (paras == null || paras.length == 0) {
24 if ((name.substring(0, 3).toLowerCase().equals("get"))
25 && !name.equals("getClass")) {
26 Object obj = methods[i].invoke(this, null);
27 getMethodXmlSerial(out, obj, methods[i], num);
28 }
29 }
30 }
31
32 out.write(head + "</" + this.getClass().getName() + "> ");
33
34 }
35
36 private void getMethodXmlSerial(PrintWriter out, Object obj, Method method,
37 int num) throws InvocationTargetException, IllegalAccessException,
38 IOException {
39 if (obj == null)
40 return;
41 String head = "";
42 for (int i = 0; i <= num; i++) {
43 head += " ";
44 }
45 if (obj.getClass().isArray()) {
46 for (int i = 0; i < Array.getLength(obj); i++) {
47 Object childobj = Array.get(obj, i);
48 if (childobj instanceof JXmlSerializable) {
49 ((JXmlSerializable) childobj).toXmlSerial(out, num + 1);
50 } else {
51 getMethodXmlSerial(out, childobj, method, num);
52 }
53 }
54 } else {
55 out.write(head + " <" + method.getName().substring(3) + "> ");
56 out.write(obj.toString());
57 out.write(" </" + method.getName().substring(3) + "> ");
58 }
59
60 }
61}
编译出来还可以,能够达到我的理想。
编译结果是
1<?xml version="1.0"?>
2<xmlTest.Parent>
3 <Name> jack </Name>
4 <Age> 0 </Age>
5 <Sex> male </Sex>
6<?xml version="1.0"?>
7 <xmlTest.Child>
8 <Name> tom </Name>
9 <Age> 0 </Age>
10 <Sex> male </Sex>
11 </xmlTest.Child>
12<?xml version="1.0"?>
13 <xmlTest.Child>
14 <Name> Marie </Name>
15 <Age> 0 </Age>
16 <Sex> female </Sex>
17 </xmlTest.Child>
18</xmlTest.Parent>
今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。
1以下是引用片段:
2package com.imct.util;
3import java.beans.XMLDecoder;
4import java.beans.XMLEncoder;
5import java.io.File;
6import java.io.FileInputStream;
7import java.io.FileNotFoundException;
8import java.io.FileOutputStream;
9import java.io.IOException;
10import java.util.ArrayList;
11import java.util.List;
12/** *//**
13 * <title>使用XML文件存取可序列化的对象的类</title>
14 * <description>提供保存和读取的方法</description>
15 * @author 殷晋
16 * <right>清华大学汽车工程开发研究院@2005</right>
17 * @version 1.0
18 * 2005-8-5 16:44:49
19 */
20public class ObjectToXMLUtil
21{
22 /** *//**
23 * 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装
24 * 保存时将会用现在的对象原来的XML文件内容
25 * @param obj 要序列化的可序列化的对象
26 * @param fileName 带完全的保存路径的文件名
27 * @throws FileNotFoundException 指定位置的文件不存在
28 * @throws IOException 输出时发生异常
29 * @throws Exception 其他运行时异常
30 */
31 public static void objectXmlEncoder(Object obj,String fileName)
32 throws FileNotFoundException,IOException,Exception
33 {
34 //创建输出文件
35 File fo = new File(fileName);
36 //文件不存在,就创建该文件
37 if(!fo.exists())
38 {
39 //先创建文件的目录
40 String path = fileName.substring(0,fileName.lastIndexOf('.'));
41 File pFile = new File(path);
42 pFile.mkdirs();
43 }
44 //创建文件输出流
45 FileOutputStream fos = new FileOutputStream(fo);
46 //创建XML文件对象输出类实例
47 XMLEncoder encoder = new XMLEncoder(fos);
48 //对象序列化输出到XML文件
49 encoder.writeObject(obj);
50 encoder.flush();
51 //关闭序列化工具
52 encoder.close();
53 //关闭输出流
54 fos.close();
55 }
56 /** *//**
57 * 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装
58 * @param objSource 带全部文件路径的文件全名
59 * @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)
60 * @throws FileNotFoundException 指定的对象读取资源不存在
61 * @throws IOException 读取发生错误
62 * @throws Exception 其他运行时异常发生
63 */
64 public static List objectXmlDecoder(String objSource)
65 throws FileNotFoundException,IOException,Exception
66 {
67 List objList = new ArrayList();
68 File fin = new File(objSource);
69 FileInputStream fis = new FileInputStream(fin);
70 XMLDecoder decoder = new XMLDecoder(fis);
71 Object obj = null;
72 try
73 {
74 while( (obj = decoder.readObject()) != null)
75 {
76 objList.add(obj);
77 }
78 }
79 catch (Exception e)
80 {
81 // TODO Auto-generated catch block
82 }
83 fis.close();
84 decoder.close();
85 return objList;
86 }
87}
88
89
90当然用Beans.instantiate也可以从文件中反序列化初对象
91
92
⑧ java中怎么把list的信息写入到xml
package com.imct.util;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* <title>使用XML文件存取可序列化的对象的类</title>
* <description>提供保存和读取的方法</description>
* @author 殷晋
* <right>清华大学汽车工程开发研究院@2005</right>
* @version 1.0
* 2005-8-5 16:44:49
*/
public class ObjectToXMLUtil
{
/**
* 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装
* 保存时将会用现在的对象原来的XML文件内容
* @param obj 要序列化的可序列化的对象
* @param fileName 带完全的保存路径的文件名
* @throws FileNotFoundException 指定位置的文件不存在
* @throws IOException 输出时发生异常
* @throws Exception 其他运行时异常
*/
public static void objectXmlEncoder(Object obj,String fileName)
throws FileNotFoundException,IOException,Exception
{
//创建输出文件
File fo = new File(fileName);
//文件不存在,就创建该文件
if(!fo.exists())
{
//先创建文件的目录
String path = fileName.substring(0,fileName.lastIndexOf('.'));
File pFile = new File(path);
pFile.mkdirs();
}
//创建文件输出流
FileOutputStream fos = new FileOutputStream(fo);
//创建XML文件对象输出类实例
XMLEncoder encoder = new XMLEncoder(fos);
//对象序列化输出到XML文件
encoder.writeObject(obj);
encoder.flush();
//关闭序列化工具
encoder.close();
//关闭输出流
fos.close();
}
/**
* 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装
* @param objSource 带全部文件路径的文件全名
* @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)
* @throws FileNotFoundException 指定的对象读取资源不存在
* @throws IOException 读取发生错误
* @throws Exception 其他运行时异常发生
*/
public static List objectXmlDecoder(String objSource)
throws FileNotFoundException,IOException,Exception
{
List objList = new ArrayList();
File fin = new File(objSource);
FileInputStream fis = new FileInputStream(fin);
XMLDecoder decoder = new XMLDecoder(fis);
Object obj = null;
try
{
while( (obj = decoder.readObject()) != null)
{
objList.add(obj);
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
}
fis.close();
decoder.close();
return objList;
}
}
⑨ 求 Java序列化对象转xml方法....
/**这里应用了JAVA的Marshall方法
*对象转xml
*返回xml
*@paramtXLife
*@return
*/
publicstaticStringtXLiftToXML(com.TXLifetXLife){
Stringxml="";
try{
ByteArrayOutputStreamout=newByteArrayOutputStream();
JAXBContextjc=JAXBContext
.newInstance("com");//包的命名空间
Marshallerm=null;
synchronized(jc){
m=jc.createMarshaller();
}
m.setProperty(Marshaller.JAXB_ENCODING,"GBK");
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
m.marshal(tXLife,out);
xml=out.toString();//赋值
}catch(Exceptione){
xml=null;
}
returnxml;
}
⑩ 如何用JAVA语言将用户在控制台上输入的内容添加到xml文件中
一个例子,大概就是这样,如果你想输入一个文件,
把
StringWriter sWriter = new StringWriter();
改成输出一个文件就可以了。
import java.io.StringReader;
import java.io.StringWriter;
import java.util.Scanner;
import java.util.StringTokenizer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.xml.sax.InputSource;
public class LineToXml {
public static void main(String[] args) throws Exception {
String xmlcontent = "<root></root>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
StringReader sReader = new StringReader(xmlcontent);
InputSource inpuSource = new InputSource(sReader);
Document doc = builder.parse(inpuSource);
Element root = (Element) doc.getElementsByTagName("root").item(0);
int index = 1;
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
StringTokenizer sToken = new StringTokenizer(line);
while (sToken.hasMoreElements()) {
String str = sToken.nextToken();
Element node = doc.createElement("node" + (index++));
Text text = doc.createTextNode(str);
node.appendChild(text);
root.appendChild(node);
}
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transFormer = transFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
StringWriter sWriter = new StringWriter();
StreamResult xmlResult = new StreamResult(sWriter);
transFormer.transform(domSource, xmlResult);
System.out.println(sWriter.toString());
}
}