您的位置:

java转xml,java转xml在线

本文目录一览:

Java中object和xml互相转换

import java.beans.XMLDecoder;

import java.beans.XMLEncoder;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

public class Object2XML {

public static String object2XML(Object obj, String outFileName)

throws FileNotFoundException {

// 构造输出XML文件的字节输出流

File outFile = new File(outFileName);

BufferedOutputStream bos = new BufferedOutputStream(

new FileOutputStream(outFile));

// 构造一个XML编码器

XMLEncoder xmlEncoder = new XMLEncoder(bos);

// 使用XML编码器写对象

xmlEncoder.writeObject(obj);

// 关闭编码器

xmlEncoder.close();

return outFile.getAbsolutePath();

}

public static Object xml2Object(String inFileName)

throws FileNotFoundException {

// 构造输入的XML文件的字节输入流

BufferedInputStream bis = new BufferedInputStream(

new FileInputStream(inFileName));

// 构造一个XML解码器

XMLDecoder xmlDecoder = new XMLDecoder(bis);

// 使用XML解码器读对象

Object obj = xmlDecoder.readObject();

// 关闭解码器

xmlDecoder.close();

return obj;

}

public static void main(String[] args) throws IOException {

// 构造一个StudentBean对象

StudentBean student = new StudentBean();

student.setName("wamgwu");

student.setGender("male");

student.setAge(15);

student.setPhone("55556666");

// 将StudentBean对象写到XML文件

String fileName = "AStudent.xml";

Object2XML.object2XML(student, fileName);

// 从XML文件读StudentBean对象

StudentBean aStudent = (StudentBean)Object2XML.xml2Object(fileName);

// 输出读到的对象

System.out.println(aStudent.toString());

}

}

怎么使用java导出大数据为xml文件

dom4j可以试试,不知道你的数据量有多大,如果太大的话,我没试过

xml文件是有规律的,你可以把要导出的数据构造一下,

我有个简单的代码

package com.test.xml;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Writer;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.XMLWriter;

public class Dom4JXML {

    

    public void createXML() {

        //用工厂类创建一个document实例

        Document doc = DocumentHelper.createDocument();

        //创建根元素emps

        Element rootEle = doc.addElement("emps");

        //添加注释

        rootEle.addComment("这是一个dom4j生成的xml文件");

        //emps根节点下创建一个emp节点

        Element empEle = rootEle.addElement("emp");

        //emp添加属性id="1"

        empEle.addAttribute("id", "1");

        //emp节点下创建一个name节点

        Element nameEle = empEle.addElement("name");

        //name节点下创建一个文本节点zhangsan

        nameEle.setText("zhangsan");

        //再为name节点创建一个兄弟节点

        Element sexEle = empEle.addElement("sex");

        sexEle.setText("man");

        //将document中的内容写入文件中

        try {

            Writer out = new FileWriter("F:\\emps.xml");

            //格式化输出,类型IE浏览一样

            OutputFormat format = OutputFormat.createPrettyPrint();

            //OutputFormat format = OutputFormat.createCompactFormat();

            format.setEncoding("UTF-8");

            //创建写出对象

            XMLWriter writer = new XMLWriter(out,format);

            writer.write(doc);

            writer.close();

            System.out.println("生成emps.xml成功。");

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            System.out.println("失败了。");

        }

    }

    

    public static void main(String[] args) {

        new Dom4JXML().createXML();

    }

}

然而从xml文件中解析以后的数据收集可以用SAX试试看

我这里有个简单的例子

package com.test.xml;

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

public class SAXParseHandler extends DefaultHandler{

public void startDocument()throws SAXException{

System.out.println("起始文挡");

}

public void endDocument()throws SAXException{

System.out.println("结束文挡");

}

public void characters(char[] ch,int start,int length)throws SAXException{

String charString=new String(ch,start,length);

System.out.println("字符:"+charString);

}

public void startElement(String namespaceURI,String localName,String qName,Attributes atts)throws SAXException{

System.out.println("起始元素:"+qName);

for(int i=0;iatts.getLength();i++){

System.out.println("属性值:"+atts.getValue(i));

}

}

public void endElement(String namespaceURI,String localName,String qName)throws SAXException{

System.out.println("结束元素:"+qName);

}

}

package com.test.xml;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

public class Books {

/**

 * @param args

 */

public static void main(String[] args) throws Exception{

// TODO 自动生成方法存根

SAXParserFactory factory=SAXParserFactory.newInstance();

SAXParser parser=factory.newSAXParser();

parser.parse("booksamp.xml",new SAXParseHandler());

}

}

用Java怎么把String类型的字符串转化为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"?

2xmlTest.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 * copyright清华大学汽车工程开发研究院@2005/copyright

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也可以从文件中反序列化初对象

Java如何把任意xsd转成xml

xsd就是xml schema,可以利用以下方法生成xml:

Schema文件定义如下:o:p/o:p

!----o:p/o:p

xs:schema xmlns=""xmlns:xs=""targetNamespace="" elementFormDefault="qualified"attributeFormDefault="unqualified"o:p/o:p

xs:element name="e1"o:p/o:p

xs:complexTypeo:p/o:p

xs:sequenceo:p/o:p

xs:element name="e11" type="xs:int"/o:p/o:p

xs:element name="e12"o:p/o:p

xs:complexTypeo:p/o:p

xs:attribute name="e121" type="xs:string" use="required"/o:p/o:p

xs:attribute name="e122" type="xs:long"/o:p/o:p

xs:complexTypeo:p/o:p

xs:elemento:p/o:p

xs:sequenceo:p/o:p

xs:complexTypeo:p/o:p

xs:elemento:p/o:p

xs:schemao:p/o:p

o:p /o:p

解析代码如下:

import org.apache.xmlbeans.*;

import com.mydomain.myApp.E1Document;

public class OutputXml {

/**

* 其中e11=11 e121=”e121”

* @param args

*/

public static void main(String args[]) {

E1Document e1Document;

E1Document.E1 E1Element;

E1Document.E1.E12 E1e2Element;

XmlOptions xmlOptions;

e1Document = E1Document.Factory.newInstance();

E1Element = e1Document.addNewE1();

E1e2Element=E1Element.addNewE12();

E1Element.setE11(11);

E1e2Element.setE121("e121");

/**

* 如果需要设置setE122的值请打开,由于xsd文件定义的元素不是必须的.

*/

//E1e2Element.setE122();

xmlOptions = new XmlOptions();

xmlOptions.setSavePrettyPrint();

xmlOptions.setSavePrettyPrintIndent(4);

String xmlStr = e1Document.xmlText(xmlOptions);

System.out.println("XML Instance Document is : \n" + xmlStr );

}

}

如何用java生成一个xml文件

一个XML文档,可以先构造一个DOM,然后将DOM转化为xml序列,输出或者生成文件。package test;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileOutputStream;

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;

public class Test {

public static void generate(){

try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.newDocument();

document.setXmlVersion("1.0");

document.setXmlStandalone(true);

Element root = document.createElement_x("MobileNet"); //创建根节点

document.appendChild(root); //将根节点添加到Document对象中

Element pageElement = document.createElement_x("page"); //设置第一个page元素到

pageElement.setAttribute("name", "list.jsp"); //设置page节点的name属性

Element methodElement = document.createElement_x("method"); //设置method节点

methodElement.setTextContent("get"); //给method设置值

pageElement.appendChild(methodElement); //添加method节点到page节点内

Element displayElement = document.createElement_x("display"); //设置method节点

displayElement.setTextContent("list撒旦发放"); //给display设置值

pageElement.appendChild(displayElement); //添加display节点到page节点内

Element request_paramElement = document.createElement_x("request_param");

request_paramElement.setTextContent("request_param1|request_param2");

pageElement.appendChild(request_paramElement);

root.appendChild(pageElement);

pageElement = document.createElement_x("page"); //设置第二个page元素到

pageElement.setAttribute("name", "content.jsp"); //设置page节点的name属性

methodElement = document.createElement_x("method");

methodElement.setTextContent("post");

pageElement.appendChild(methodElement);

displayElement = document.createElement_x("display");

displayElement.setTextContent("content");

pageElement.appendChild(displayElement);

Element url_titleElement = document.createElement_x("url_title"); //设置url_title节点

url_titleElement.setTextContent("title,publisher,published_calendar"); //给url_title设置值

pageElement.appendChild(url_titleElement); //添加url_title节点到page节点内

root.appendChild(pageElement); //将page段加人根节点内

TransformerFactory transFactory = TransformerFactory.newInstance(); //开始把Document映射到文件

Transformer transFormer = transFactory.newTransformer();

DOMSource domSource = new DOMSource(document); //设置输出结果

File file = new File("MobileNetRule.xml"); //生成xml文件

if (!file.exists()) {

file.createNewFile();

}

FileOutputStream out = new FileOutputStream(file); //文件输出流

StreamResult xmlResult = new StreamResult(out); //设置输入源

transFormer.transform(domSource, xmlResult); //输出xml文件

System.out.println(file.getAbsolutePath()); //测试文件输出的路径

TransformerFactory tf = TransformerFactory.newInstance();

Transformer t = tf.newTransformer();

t.setOutputProperty("{/encoding/}","GB2312/");

ByteArrayOutputStream boc = new ByteArrayOutputStream();

t.transform(new DOMSource(document), new StreamResult(boc));

String xmlstring = boc.toString();

System.out.println(xmlstring);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args){

Test.generate();

}

}