有下面这样一个类的对象
    public class test
    {
        public int i;
        public string s;
        public bool b;
        public List<int> list;
        public List<listObject> listObj;
    }问题1:
怎么把这个对象序列化到一个流里。
问题2:
序列化后的结果是这个样子:我怎么把<test>这个节点及其所有子节点插入到另一个XML文件的指定节点下面<?xml version="1.0" encoding="utf-8"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <i>10</i>
  <s>ss</s>
  <b>true</b>
  <list>
    <int>1</int>
    <int>2</int>
    <int>3</int>
  </list>
  <listObj>
    <listObject>
      <s>s1</s>
      <ss>ss1</ss>
    </listObject>
    <listObject>
      <s>s2</s>
      <ss>ss2</ss>
    </listObject>
  </listObj>
</test>

解决方案 »

  1.   

    XmlSerializer 通过这个类进行序列化并且你的类上应该加上[XmlRoot("Root")](根节点),[XmlElement(ElementName = "xxx")] 元素名称之类的。试下!网上教程应该很多流都是Stream,继承它的无非就是FileStream、MemoryStream之类的。手写的不知道有帮助没有
      

  2.   

    用JAXB应该可以,你可以去查看:http://www.oracle.com/technetwork/articles/javase/index-140168.html或者搜JAXB
      

  3.   

    1.怎么把这个对象序列化到一个流里。我用JAXB试了下,通过Test对象生成xml是很方便的。具体代码:
    import java.io.File;
    import java.util.List;import javax.xml.bind.JAXB;
    import javax.xml.bind.JAXBException;public class Test {
    private int i;
    private String s;
    private boolean b;
    private List<Integer> list;

    public int getI() {
    return i;
    }
    public void setI(int i) {
    this.i = i;
    } public String getS() {
    return s;
    } public void setS(String s) {
    this.s = s;
    } public boolean isB() {
    return b;
    } public void setB(boolean b) {
    this.b = b;
    } public List<Integer> getList() {
    return list;
    } public void setList(List<Integer> list) {
    this.list = list;
    } public static Test JAXBunmarshal(File xmlFile) throws JAXBException {
    return JAXB.unmarshal(xmlFile, Test.class);
    } public void JAXBmarshal(File fRootDir) {
    if (!fRootDir.exists()) {
    fRootDir.mkdirs();

    JAXB.marshal(this, new File(fRootDir, this.getS() + ".xml"));
    }

    }
    测试类:
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.List;import javax.xml.bind.JAXBException;public class JAXBTest { public static void main(String[] args) throws FileNotFoundException, JAXBException {
    List<Integer> testList;
    {
    Test test = new Test();
    test.setB(true);
    test.setI(5);
    test.setS("wo");
    testList = new ArrayList<Integer>();
    for (int i = 0; i < 3; i++) {
    testList.add(i);
    }
    test.setList(testList);
    //把test类转化成xml文件,当然也可以指定成outputstream,writer,string,可以参考API
    test.JAXBmarshal(new File("c://"));
    }
    System.out.println("=================================");
    {
    //把xml文件转换成test类
    Test test = Test.JAXBunmarshal(new File("c://wo1.xml"));
    System.out.println(test.getI());
    System.out.println(test.getS());
    for (int i = 0; i < test.getList().size(); i++) {
    System.out.println(test.getList().get(i));
    }
    }

    }
    }
    第二个问题:我怎么把<test>这个节点及其所有子节点插入到另一个XML文件的指定节点下面
    转成流之后我觉得插入到另外一个xml文件应该很容易,
    用dom4j把流转化成document对象:
    SAXReader reader = new SAXReader();
    //读xml文件生成document对象,也可以读流
    Document document = reader.read(new File("c://wo.xml"));
    //取得第一个节点,也就是test节点
    Element element = document.getRootElement();
    然后通过dom4j的API把此element加到另外一个xml文件中。不知道我这个是不是楼主的意思……