使用dom4j
http://blog.leiling.com/calm/articles/2366.aspx
http://blog.leiling.com/calm/articles/2365.aspx
http://blog.leiling.com/calm/articles/2346.aspx

解决方案 »

  1.   

    hanabi(千梦一夜) :我的意思是说要用java来改了
      

  2.   

    CALM(不迷不悟) :多谢指引
    我看看先
      

  3.   

    CALM(不迷不悟) :我看到的好像都是创建一个新的文件,没有修改原来旧的文件的.
    是不是XML文件不适合这种数据库常用的操作呢?
      

  4.   

    读文件->创建Document对象->修改Document->写回文件无论使用jdom还是dom4j都是这个过程
      

  5.   

    直接写回原来的xml文件啊
    为什么要写到一个新的文件?
    你找到的那些例子也许只是说明如何写一个xml文件而已
      

  6.   

    zcjl():5555,那你就说出来吧.....
      

  7.   

    /*
     * 创建日期 2004-10-14
     */
    package com.zcjl.test.xml.jdom;import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.Writer;import org.jdom.CDATA;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
    import org.jdom.xpath.XPath;/**
     * @author cong_zhang
     */
    public class JDomDemo {    public static void main(String[] args) {
            //先生成根元素(root元素的名字不一定要叫做“root”,希望不要被我误导了)
            Element root = new Element("root");        //开始生成子元素(存放数据)
            Element aaa = new Element("aaa").addContent("aaaaa");
            Element bbb = new Element("bbb").addContent("bbbbb");
            bbb.setText("");
            //生成一个CDATA对象
            bbb.addContent(new CDATA("ccccc"));        //把子元素都添加到root元素里面
            root.addContent(aaa);
            root.addContent(bbb);        //生成Document对象(jdom对于xml文档的对应数据结构)
            Document doc = new Document(root);        //前面是用jdom生成一个完整的xml的过程        //下面开始写到xml文件中,假设为D:\mytest.xml
            String xmlFile = "D:\\中文1&2.xml";
            WriteToFile(doc, xmlFile, "GBK");
            //看看是否生成xml到D:\mytest.xml了?        //下面开始从文件中读取xml数据
            //检查一下控制台打印的是否和文件中一致?
            Document newDoc = ReadFromFile("D:\\中文1&2.xml");
            System.out.println(print(newDoc));        //查询xml中的某一项数据,比如说bbb的值
            //方法1,通过文档结构来查询:
            Element bbb1 = newDoc.getRootElement()
                .getChild("bbb");
            System.out.println("bbb的值是: " + bbb1.getText());        //方法2,利用xpath:
            try {
                Element bbb2 = (Element) XPath.selectSingleNode(doc.getRootElement(), "//bbb");
                System.out.println("bbb的值是: " + bbb2.getText());
            } catch (JDOMException e) {
                e.printStackTrace();
            }
        }    public static String print(Document document, String encoding) {
            ByteArrayOutputStream byteRep = new ByteArrayOutputStream();
            Format fmt = Format.getPrettyFormat();
            fmt.setEncoding(encoding);
            XMLOutputter docWriter = new XMLOutputter(fmt);
            try {
                docWriter.output(document, byteRep);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return byteRep.toString();
        }    public static String print(Document document) {
            return print(document, "GBK");
        }    //从文件中读取xml
        public static Document ReadFromFile(String filePath) {
            try {
                Document anotherDocument = new SAXBuilder().build(new InputStreamReader(
                        new FileInputStream((filePath))));
                return anotherDocument;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }    //把Document写到文件中
        public static void WriteToFile(Document doc, String filePath,
                String encoding) {
            try {
                Format fmt = Format.getPrettyFormat();
                fmt.setEncoding(encoding);
                XMLOutputter outputter = new XMLOutputter(fmt);
                Writer writer = new OutputStreamWriter(new FileOutputStream(
                        filePath), encoding);
                outputter.output(doc, writer);
                writer.close();
            } catch (java.io.IOException e) {
                e.printStackTrace();
            }
        }
    }
      

  8.   

    zcjl() :多谢你的耐心.
    但是,WriteToFile中里面是新建了个文件.代码中没有对XML文件读出后没有进行修改
      

  9.   

    parse xml文档,生成dom树,查找到,修改之,然后documentElement的toString方法即可,随便你用什么方式写到文件中去。