编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

关于jdom的使用(jsdom操作方法)

wxchong 2024-07-26 22:45:02 开源技术 14 ℃ 0 评论

最近,准备学习一下Spring的相关知识,虽然知道,javaweb使用properties文件和xml文件作为配置文件,其中properties文件是由java本身提供的相关类和方法进行解析的,而xml也需要解析。至于具体使用什么解析方法,不是很清楚,学习java基础的时候,好像知道xml常用的解析方式为dom4j和SAX解析,对于这两种解析方式不再赘述,本文简单探讨一下使用jdom解析XML的相关知识。

文档解析

JDOM 不光可以很方便的建立XML文档,它的另一个用处是它能够读取并操作现有的 XML 数据。

JDOM的解析器在org.jdom.input.*这个包里,其中的DOMBuilder的功能是将DOM模型的Document解析成JDOM模型的Document;SAXBuilder的功能是从文件或流中解析出符合JDOM模型的XML树。由于我们经常要从一个文件里读取数据,因此我们应该采用后者作为解析工具。

解析一个xml文档,基本可以看成以下几个步骤:

1.实例化一个合适的解析器对象

本例中我们使用SAXBuilder:

SAXBuilder sb = new SAXBuilder();

2.以包含XML数据的文件为参数,构建一个文档对象myDocument

Document myDocument = sb.build(/some/directory/myFile.xml);

3.获到根元素

Element rootElement = myDocument.getRootElement();

一旦你获取了根元素,你就可以很方便地对它下面的子元素进行操作了,下面对Element对象的一些常用方法作一下简单说明:

getChild("childname") 返回指定名字的子节点,如果同一级有多个同名子节点,则只返回第一个;如果没有返回null值。

getChildren("childname") 返回指定名字的子节点List集合。这样你就可以遍历所有的同一级同名子节点。

getAttributeValue("name") 返回指定属性名字的值。如果没有该属性则返回null,有该属性但是值为空,则返回空字符串。

getChildText("childname") 返回指定子节点的内容文本值。

getText() 返回该元素的内容文本值。

实例代码

1.准备工作,需要引入jdom的jar,本实例使用的是jdom-2.0.6.jar

2.需要解析的xml文件test.xml

<?xml version="1.0" encoding="UTF-8"?>

<HD>

<disk name="C">

<capacity>8G</capacity>

<directories>200</directories>

<files>1580</files>

</disk>

<disk name="D">

<capacity>10G</capacity>

<directories>500</directories>

<files>3000</files>

</disk>

</HD>

3.xml解析使用的类Sample1.java

import java.util.*;

import org.jdom2.*;

import org.jdom2.input.SAXBuilder;

public class Sample1 {

public static void main(String[] args) throws Exception{

SAXBuilder sb=new SAXBuilder();

Document doc=sb.build(Sample1.class.getClassLoader().getResourceAsStream("test.xml")); //构造文档对象

Element root=doc.getRootElement(); //获取根元素HD

List list=root.getChildren("disk");//取名字为disk的所有元素

for(int i=0;i<list.size();i++){

Element element=(Element)list.get(i);

String name = element.getAttributeValue("name");//获取name属性值

String capacity=element.getChildText("capacity");//取disk子元素capacity的内容

String directories=element.getChildText("directories");//取disk子元素directories的内容

String files=element.getChildText("files");//取disk子元素files的内容

System.out.println("磁盘信息:");

System.out.println("分区盘符:"+name);

System.out.println("分区容量:"+capacity);

System.out.println("目录数:"+directories);

System.out.println("文件数:"+files);

System.out.println("-----------------------------------");

}

}

}

7.4运行结果:

本文简单讲述了使用jdom解析XML的相关知识,至于使用jdom操作xml的相关使用(比如创建、修改)等留待以后具体使用到的时候再来探讨了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表