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";
}
}
}
....................................................................................
}
本人小菜鸟一个,一点肤浅的理解,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";
}
}
}
....................................................................................
}
相关文章推荐
- 今天做的一个ruby解析xml的小程序
- dom、SAX、Jdom、dom4j四种解析xml方式简单总结
- 最简单的一个XML解析-dom4j
- 使用DOM4J解析XML的一个例子
- 一个用Dom4j解析xml的例子
- 一个C++的 XML 解析程序
- Dom4j解析xml总结
- 今天找到一个好的DOM4J解析XML的方法elementByID。可以通过QName获取属性。记录下~
- xml文档解析之DOM、SAX、JDOM、Dom4J总结
- android解析XML总结(SAX、Pull、Dom三种方式)附带DOM4J、JDOM
- dom4j解析xml操作总结
- XML学习总结-xml概念和dom4j解析技术-(一)
- Dom4J解析XML总结
- javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)
- 一个C++的 XML 解析程序
- SnippetShare 项目总结连载(六)-----一个普通javaEE 程序所需要的最少的build.xml
- android解析XML总结(SAX、Pull、Dom三种方式)附带DOM4J、JDOM
- [置顶] XMLParser一个基于Dom4J的XML解析工具的使用
- 一个SAX解析xml的简单程序。
- 一个简单的利用msxml解析xml的程序