跟进去看一下book.getChild().getTextTrim()返回的值是否有问题,StringBuffer本身对中文的支持很好啊。有可能getTextTrim()这个方法有问题

解决方案 »

  1.   

    To: joincsdn(云) ( ) 信誉:100 
    代码:
    目的:更改指定id下面readid的值,可以读出(  String readid_text=el_two.getChildText("readid");),但是改不起来
    public void ChangeReadId(String fn,String id){
      //指定DATATIME下面的READID
     Document doc = null;
     File file = new File(fn);
     if(file.exists()){
       SAXBuilder sb = new SAXBuilder();
       try{
         doc = sb.build(file);
       }catch(JDOMException e){
         System.out.println("异常:"+e.getMessage());
       }catch(Exception e){
         System.out.println(e.getMessage());
       }
       List return_list = new ArrayList();//定义返回对象
       Element root = doc.getRootElement();//获得根节点,即一级元素
       List list_two = root.getChildren();//获得根节点下级元素列表,即二级元素
       for(int i=0;i<list_two.size();i++){
         Element el_two = (Element)list_two.get(i);//类型转换
         List list_three = el_two.getChildren("DateTime");//获得元素名为id的list对象
         for(int j=0;j<list_three.size();j++){
           Hashtable ht = new Hashtable();//存放数据
           Element el_three = (Element)list_three.get(j);//类型转换
           String el_three_text = el_three.getText();//获得元素的内容
           //System.out.println(el_three.getName()+"----"+el_three_text);
           if(el_three_text.equals(id)){
             //******************************
                Element readid=el_two.getChild("readid");
                String readid_text=el_two.getChildText("readid");
                readid.setText("1111");
                return;
              //********************************
           }
         }
       }
     }
    }
      

  2.   

    to:
    To: joincsdn(云) ( ) 信誉:100 在修改完之后还需要重写xml文件,就是把修改过的doc重写到xml文件
    如何从新写入??
      

  3.   

    public void ChangeReadId(String fn, String id) {
        //指定DATATIME下面的READID
        Document doc = null;
        File file = new File(fn);
        if (file.exists()) {
          SAXBuilder sb = new SAXBuilder();
          try {
            doc = sb.build(file);
          }
          catch (JDOMException e) {
            System.out.println("异常:" + e.getMessage());
          }
          catch (Exception e) {
            System.out.println(e.getMessage());
          }
          List return_list = new ArrayList(); //定义返回对象
          Element root = doc.getRootElement(); //获得根节点,即一级元素
          List list_two = root.getChildren(); //获得根节点下级元素列表,即二级元素
          for (int i = 0; i < list_two.size(); i++) {
            Element el_two = (Element) list_two.get(i); //类型转换
            List list_three = el_two.getChildren("time"); //获得元素名为id的list对象
            for (int j = 0; j < list_three.size(); j++) {
              Element el_three = (Element) list_three.get(j); //类型转换
              System.out.println(el_three);
              String el_three_text = el_three.getValue(); //获得元素的内容
              System.out.println(el_three_text);
              //System.out.println(el_three.getName()+"----"+el_three_text);
              if (el_three_text.equals(id)) {
                //******************************
                 Element readid = el_two.getChild("id");
                 String readid_text = el_two.getChildText("id");
                 readid.setText("1111");
                 //return;
                 //设置输出格式
                 Format f = Format.getRawFormat();
                 f.setIndent("");
                 f.setEncoding("GBK");
                 XMLOutputter output = new XMLOutputter(f);
                 //XMLOutputter output = new XMLOutputter(" ",true,"GBK");
                 try {
                   output.output(doc, new FileOutputStream(fn));
                 }
                 catch (Exception e) {
                   System.out.println(e.getMessage());
                 }
                //********************************
              }else{
                System.out.println("要修改的记录不存在!");
              }
            }
          }
        }
      }  public static void main(String[] args) {
        HelloXML helloXml = new HelloXML();
        //System.out.println(helloXml.CheckId("D:\\project\\XML\\project\\project\\test.xml","4"));
        //helloXml.EditXML("D:\\project\\XML\\project\\project\\test.xml","6");
        helloXml.ChangeReadId("D:\\project\\XML\\project\\project\\test.xml","01-6-23 18:26:56");
        //System.out.println(ok);
      }
    xml文件:
    <?xml version="1.0" encoding="GBK"?>
    <lists>
     <list>
      <id>1</id>
      <username>冯奎</username>
      <time>01-4-23 18:26:56</time>
      <homepage>http://www.getjob.com.cn</homepage>
      <email>[email protected]</email>
      <context>我的留言</context>
     </list>
     <list>
      <id>2</id>
      <username>妞妞</username>
      <time>01-6-23 18:26:56</time>
      <homepage>http://www.neworiental.org</homepage>
      <email>[email protected]</email>
      <context>测试留言</context>
     </list>
     <list>
      <id>4</id>
      <username>4</username>
      <time>4</time>
      <hompage>4</hompage>
      <email>4</email>
      <context>4</context>
     </list>
    </lists>
    至于一旦记录修改如何退出循环你自己处理一下吧!