<?xml version="1.0" encoding="iso-8859-1"?>
<tree id="0">
    <item text="Lawrence Block" id="t2_lb" im0="folderClosed.gif" im1="folderOpen.gif" im2="folderClosed.gif">
     <item text="All the Flowers Are Dying" id="lb_1" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="The Burglar on the Prowl" id="lb_2" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="The Plot Thickens" id="lb_3" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Grifter Game" id="lb_4" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="The Burglar Who Thought He Was Bogart" id="lb_5" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
    </item>
    <item text="Robert Crais" id="t2_rc" open="1" im0="folderClosed.gif" im1="folderOpen.gif" im2="folderClosed.gif">
        <item text="The Forgotten Man" id="rc_1" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Stalking the Angel" id="rc_2" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Free Fall" id="rc_3" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Sunset Express" id="rc_4" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Hostage" id="rc_5" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
    </item>
    <item text="Dan Brown" id="t2_db" im0="folderClosed.gif" im1="folderOpen.gif" im2="folderClosed.gif">
        <item text="Angels &amp; Demons" id="db_1" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Deception Point" id="db_2" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Digital Fortress" id="db_3" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="The Da Vinci Code" id="db_4" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Deception Point" id="db_5" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
    </item>
    <item text="Joss Whedon" id="t2_jw" im0="folderClosed.gif" im1="folderOpen.gif" im2="folderClosed.gif">
        <item text="Astonishing X-Men" id="jw_1" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Joss Whedon: The Genius Behind Buffy" id="jw_2" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Fray" id="jw_3" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="Tales Of The Vampires" id="jw_4" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
<item text="The Harvest" id="jw_5" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>
    </item>
</tree>我有一个类 Item ,他有text、id、im0、im1、im2,items 这几个属性
其中items是一个List<Item>类型,其他都是string类型 ,如何通过这个对象生成上面的xml格式

解决方案 »

  1.   

    有很多XML的类库,JDom, Dom4j等等都可以
      

  2.   

    我用XMLDecoder生成的XML是这样的<?xml version="1.0" encoding="UTF-8"?> 
    <java version="1.6.0_22" class="java.beans.XMLDecoder"> 
     <object id="Item0" class="test.Item"> 
      <void property="id"> 
       <string>t2_lb</string> 
      </void> 
      <void property="items"> 
       <object class="java.util.ArrayList"> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
        <void method="add"> 
         <object idref="Item0"/> 
        </void> 
       </object> 
      </void> 
      <void property="text"> 
       <string>Lawrence Block</string> 
      </void> 
     </object> 
    </java> 
      

  3.   

    dom4jDocument doc = DocumentHelper.createDocument();//创建
    Element root = doc.addElement("tree");//root节点
    root.addAttribute("id", "0");//属性
    循环Item
    Element e = root.addElement("item")
    e.addAttribute("text", "Lawrence Block");
    循环items
    Element e1 = e.addElement("items")
    ....写入..
      

  4.   


    package xml;import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;import util.entity.GameVO;/**
     * 将一个对象转换为xml,利用dom4j
     * @author xhf
     *
     */
    public class BeanToXML {
    public static Document beanToXMLTest(GameVO gamevo) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, InstantiationException, NoSuchMethodException
    {
    Document document=DocumentHelper.createDocument();
    document.addElement("root");
    Element root=document.getRootElement();
    Field[] fields=gamevo.getClass().getDeclaredFields();
    for (int i = 0,len=fields.length; i <len; i++) {
    Method method=gamevo.getClass().getMethod("get"+fields[i].getName().substring(0,1).toUpperCase()+fields[i].getName().substring(1, fields[i].getName().length()));
    root.addElement(fields[i].getName()).setText((String)method.invoke(gamevo));
    }
    return document;
    }

    public static void main(String[] args) {
    GameVO gamevo=new GameVO();
    gamevo.setCardFlag("1");
    gamevo.setChannel_ID("25070000");
    gamevo.setCpID("C00043");
    gamevo.setCpServiceID("110221657000");
    gamevo.setFee("1");
    gamevo.setGameEntityID("34167");
    gamevo.setMsisdn("15850686312");
    gamevo.setUaID("335311");
    gamevo.setOprNumb("opr1");
    gamevo.setPackageID("500230544000");
    gamevo.setSender("202");
    gamevo.setTest("test");
    try {
    System.out.println(BeanToXML.beanToXMLTest(gamevo).asXML());
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }}