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();

}

}

原創文章,作者:BNJA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135564.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BNJA的頭像BNJA
上一篇 2024-10-04 00:13
下一篇 2024-10-04 00:13

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論