您的位置:首页 > 移动开发 > 微信开发

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

2010-06-10 15:30 351 查看
这两天做了小活,用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";
}
}
}
....................................................................................
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: