本帖最后由 sAS112UUUYY111 于 2010-03-16 16:52:38 编辑

解决方案 »

  1.   

    先用dom解析这个xml文件,把其中的元素都读出来,然后用文件流分别把内容写到文件中
      

  2.   

    有会用SAX方式解析该xml的吗?
      

  3.   


    File file = new File("/home/china/work/abc.xml");
    File fa = new File("/home/china/work/a.xml");
    File fb = new File("/home/china/work/b.xml");
    File fc = new File("/home/china/work/c.xml");
    SAXReader reader = new SAXReader();
    try {
    Document document = reader.read(file);
    Element root = document.getRootElement();
    if (!fa.exists()) {
    fa.createNewFile();
    fb.createNewFile();
    fc.createNewFile();
    } Element a = root.element("a");
    Element b = root.element("b");
    Element c = root.element("c");

    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    XMLWriter writer = new XMLWriter(new FileWriter(fa), format);
    writer.write(a);
    writer.flush(); writer = new XMLWriter(new FileWriter(fb), format);
    writer.write(b);
    writer.flush(); writer = new XMLWriter(new FileWriter(fc), format);
    writer.write(c);
    writer.flush(); writer.close();
    System.out.println("操作完成");
    } catch (DocumentException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }我看这样行!
      

  4.   

    我希望是使用SAX方式,因为如果是大数据量的xml文件,dom就会内存溢出的
      

  5.   


    那你可以用jdk提供的StAX的方式解析啊,或者用对StAX的封装库Axiom(http://smartzxy.javaeye.com/blog/272018)
      

  6.   

    Java code
    File file = new File("/home/china/work/abc.xml");
            File fa = new File("/home/china/work/a.xml");
            File fb = new File("/home/china/work/b.xml");
            File fc = new File("/home/china/work/c.xml");
            SAXReader reader = new SAXReader();
            try {
                Document document = reader.read(file);
                Element root = document.getRootElement();
                if (!fa.exists()) {
                    fa.createNewFile();
                    fb.createNewFile();
                    fc.createNewFile();
                }            Element a = root.element("a");
                Element b = root.element("b");
                Element c = root.element("c");
                
                OutputFormat format = OutputFormat.createPrettyPrint();
                format.setEncoding("utf-8");
                XMLWriter writer = new XMLWriter(new FileWriter(fa), format);
                writer.write(a);
                writer.flush();            writer = new XMLWriter(new FileWriter(fb), format);
                writer.write(b);
                writer.flush();            writer = new XMLWriter(new FileWriter(fc), format);
                writer.write(c);
                writer.flush();            writer.close();
                System.out.println("操作完成");
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    我看这样行!
      

  7.   

    是的,四楼的固然没问题。但是,我想知道有人会用SAX解析吗?
      

  8.   

    你们不觉得这样的做法得到的3个小文件没有xml文件头吗,有谁能解决这个问题呢