DOM4J解析XML 写的一个小程序总结

这两天做了小活,用DOM4J解析一个. xml文件

 

本人小菜鸟一个,一点肤浅的理解,xml文件类似于html文件,只是xml文件的编写比html更加规范,各方面有着比较严的规定,包括标签,属性

 

有几种解析xml的工具,在这里选择使用最为广泛的dom4j,它的思想是,

   将xml文件看做是一个倒挂的树,生成一个xml的document对象,指向root结点,父节点下有若干个一级子节点,称为element,每一个element下面又连接着若干个孩子结点,称为childelement
 例如:
  <book>                         //rootnode
 <author>                         //author一级子节点 element对象
<authorname>Tom</authorname>      //authorname 二级子节点 同样是element对象 称为childelement
<authorstatus>chiefeditor</authorstatus>  //authorstatus 二级子节点 同样是element对象 称为childelement
</author>
 <bookname>Java编程思想</bookname>   //bookname一级子节点 element对象
 <price>46$</price>                 //price一级子节点    element对象
</book>
有了以上的理解,就可以进行简单的xml文件解析了
下面是一个类,部分代码如下:
public string readxml()
{
        ............................................................................
        String vedioname[] = new String[10];
        String vediosize[] = new String[10];
        String imagename[] = new String[10];
        String imagesize[] = new String[10];
        String textdata[] = new String[1024];
       ...........................................................................................
      SAXReader saxReader = new SAXReader();
      Document document = saxReader.read(new File(xmlpath));                  //形成xml的document的对象;
      Element root = document.getRootElement();                                         //获取xml的document的根结点;
      List<Element>list=root.elements();                                                       //获取根结点下面的所有的子节点elements;
      for(int i = 0;i < list.size();i++)                                                               //获取element的个数,遍历所有的结点进行查询;
      {                 
      Element node = list.get(i);
      String nodename = node.getName();                                                       //获取结点的名称;
      if(nodename == "images")
      {
       List<Element>childimage = node.elements();
       for(int j = 0;j < childimage.size();j++)
         {
        imagename[j] = childimage.get(j).element("a").attribute("href").getValue();    //获取结点的属性及值;
        out.println(imagename[j]);  
        imagesize[j] = childimage.get(j).element("a").attribute("size").getValue();
        StrImage = StrImage + "{/"" + "/lont/modules/m9" + "/"
     + "foldername" + "/" + imagename[j] + "/""
     + ","+imagesize[j]+"},"+"/n";
        }
      }
      else if(nodename == "videos")
      {
        List<Element>childvideo = node.elements();
        for(int k = 0;k < childvideo.size();k++)
         {
        vedioname[k] = childvideo.get(k).element("a").attribute("href").getValue();
        out.println(vedioname[k]);
        vediosize[k] = childvideo.get(k).element("a").attribute("size").getValue();
        Strvedio = Strvedio + "{/"" + "/lont/modules/m9" + "/"
     + "foldername" + "/" + vedioname[k] + "/""
     + ","+vediosize[k]+"},"+"/n";
         }
      }
      else if(nodename == "content")
      {
       List<Element>childtext = node.elements();
       for(int m = 0;m < childtext.size();m++)
       {
        textdata[m] = "text exists";
        out.println(textdata[m]);
        StrText = StrText + "/"" + textdata[m] + "/"" + ","+"/n";
       }
      }
      }
             ....................................................................................
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值