免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1603 | 回复: 0
打印 上一主题 下一主题

我的jdom心得! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-19 14:20 |只看该作者 |倒序浏览
最近学习了jdom又些心得体会和大家分享!
1。这是一个xml文件:
<?xml version="1.0" encoding="GB2312"?>;
<学生花名册>;
<学生 性别 = "男">;
<姓名>;李华</姓名>;
<年龄>;14</年龄>;
<电话>;6287555</电话>;
</学生>;
<学生 性别 = "男">;
<姓名>;张三</姓名>;
<年龄>;16</年龄>;
<电话>;8273425</电话>;
</学生>;
</学生花名册>;
2。这是一个学生的实体bean
public class StudentBean {
     private String sex;
    private String name;
    private int age;
    private String phone;

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

3。这是使用jdom的java文件

import org.jdom.*;//表示xml文档以及组件类
import org.jdom.input.*;//用于构建xml文档的类
import org.jdom.output.*;//输出xml文档的类
import org.jdom.xpath.*;//查询类
import java.io.*;
import java.util.Vector;
import java.util.List;
import java.util.Iterator;

public class myJdom {
    private Vector stuVec = new Vector();
    private void readXmlFile(String inFile)throws Exception{
             try{
                 SAXBuilder saxb = new SAXBuilder();
                 //创建文档
                 Document doc = saxb.build(new FileInputStream(inFile));
                //获得文档根元素
                 Element el = doc.getRootElement();
               //生成xpath对象
                 XPath xpath = XPath.newInstance("//电话[../姓名='李华']";
              //返回选中的结点
                 List li = xpath.selectNodes(el);
                 Iterator it = li.iterator();
                 while(it.hasNext()){
                    Element element = (Element)it.next();
                    System.out.println(element.getText());
                 }
                 System.out.println("li="+li);
                //返回根元素的子元素,并加入studentbean中
                 List ls = el.getChildren();
                 for(int i =0;i<ls.size();i++){
                   StudentBean sb = new StudentBean();
                   Element stu = (Element)ls.get(i);
                   String sex = stu.getAttribute("性别".getValue();
                     //System.out.println(sex);
                     //System.out.println(stu.getAttribute("性别".getName());
                   sb.setSex(sex);
                   Element el1 = stu.getChild("姓名";
                     //System.out.println(el1.getText());
                   sb.setName(el1.getText());
                   Element el2 = stu.getChild("年龄";
                     //System.out.println(el2.getText());
                   sb.setAge(Integer.parseInt(el2.getText()));
                   Element el3 = stu.getChild("电话";
                     //System.out.println(el3.getText());
                   sb.setPhone(el3.getText());
                   stuVec.add(sb);
                     //System.out.println(stuVec);

                 }
             }catch(Exception e){e.printStackTrace();}
    }
//这是从vector中读取数据,从数据库中读取类似!
    private void writeXmlFile(String outFile)throws Exception{
        try{
           //创建文档
            Document doc = new Document(new Element("学生花名册" );
          //从vector中取得数据并插入新结点
            for(int i=0;i<stuVec.size();i++){
                StudentBean sb = (StudentBean)stuVec.get(i);
                Element el1 = new Element("学生";
                Attribute attr = new Attribute("性别",sb.getSex());
                el1.setAttribute(attr);
                doc.getRootElement().addContent(el1);
                //Element el2 = new Element("姓名".addContent(sb.getName());
                Element el2 = new Element("姓名".setText(sb.getName());
                el1.addContent(el2);
                Element el3 = new Element("年龄").setText(sb.getAge()+"");
                el1.addContent(el3);
                Element el4 = new Element("电话").setText(sb.getPhone());
                el1.addContent(el4);
            }
            //生成XMLOutputter对象,第一个参数“  ”中的空格数是指定子元素从父元素缩进的空格数
            XMLOutputter xml = new XMLOutputter("  ",true,"gb2312");
            //xml.output(doc,System.out);
           // xml.output(doc,new FileWriter(outFile));
            xml.output(doc,new FileOutputStream(outFile));

        }catch(Exception e){e.printStackTrace();}

    }

    public static void main(String args[])throws Exception{
        myJdom mytest = new myJdom();
        System.out.println("start read xml");
        mytest.readXmlFile("c:\\Input.xml");
        System.out.println("start write xml");
        mytest.writeXmlFile("c:\\Output.xml");
        System.out.println("write end!");

    }
}


感谢本站的关于xml帖子,这是我参考后,我的一些心得希望对大家有帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP