Xml解析

来源:互联网 发布:宁波淘宝外包 编辑:程序博客网 时间:2024/06/04 18:22


1. 为什么需要XML解析?

a) XML用于应用程序的配置文件。

b) 不同语言、不同平台之间数据交换。

 

2. 如何解析xml

4种技术,可以用于解析xml

DOMJDOMdom4jSax

Dom——原生态标准模型。

Jdom——Java定制模型。(专门针对Java语言)

Dom4j——优化Jdom之后的版本。(性能非常高)

(树形)

Sax——适合于大型xml文件;编码难度高。(事件模型)

总结:大型xml只能使用sax;其他使用jdom或者dom4j

 

树形特点:一次性加载全部的XML文件数据。(适合于小型XML文件)

事件模型:按需加载指定部分数据。(适合于大型XML文件)

 

3. 如何使用Jdom解析xml

注:XML解析最核心的一个类:Document(文档,表示一个XML文件)

   xml文件标准格式:

1. 文件的后缀名必须是.xml文件。

2. 必须有一个头文件。

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

3. 必须且只能有一个根节点。

 

问题:如何利用Java程序读取XML文件中的数据?

答案:解析xml

 

JDOM解析步骤:

1. 创建解析器对象SaxBuilder

2. 获取Document文档对象。

3. 获取根节点。

4. 获取根节点一下的子节点及值。

 

JDOMXML文件:

1. 创建根节点。

2. 创建子节点,并将子节点添加到根节点。

3. 创建一个document文档对象。

4. 输出文档对象到一个文件中。(注意格式)

 代码实例:

 保存数据 

public class WriterXML {


public static void main(String[] args) {

//创建文档对象
Document doc = DocumentHelper.createDocument();

//调用查询方法,获取查询的数据
List<UserInfo> list = new UserInfoDAO().queryAll();

Element root = doc.addElement("userinfos");

for(UserInfo u : list){

Element user = root.addElement("user");
user.addAttribute("uid", u.getUid()+"");

user.addElement("uname").setText(u.getUname());
user.addElement("upwd").setText(u.getUpwd());
}

OutputFormat fmt = new OutputFormat();
fmt.setIndentSize(4);
fmt.setNewlines(true);

try {

XMLWriter out = new XMLWriter(new FileOutputStream(new File("c:/test.xml")),fmt);

out.write(doc);

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

System.out.println("创建成功");
}

}

读取 数据:

public class ReaderXML {


public static void main(String[] args) {

//1. 创建解析器
SAXReader reader = new SAXReader();

try {

//2. 读取文档
Document dom = reader.read(new File("e:/testwriter.xml"));

Element root = dom.getRootElement();

List<Element> list = root.elements();

for(Element e : list){
System.out.print(e.attribute("uid").getValue());
System.out.print(e.elementText("uname")+"\t");
System.out.print(e.elementText("upwd")+"\n");
}

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

}

原创粉丝点击