jdom解析xml文件


<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person perid="1001">
<name>jim</name>
<age>89</age>
<address>安徽淮北</address>
<sex>男</sex>
</person>

<person perid="1002">
<name>tom</name>
<age>56</age>
<address>北京海淀</address>
<sex>女</sex>
</person>
</persons>



[size=medium]
package jdomXml;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

/**
* jdom解析xml文件
*
* @author ly *
*/
public class JDomXML {

public JDomXML() {
}

/**
* 解析xml文件
*
* @param xmlFile
*/
@SuppressWarnings("rawtypes")
public void parseXml(File xmlFile) {
SAXBuilder sax = new SAXBuilder(false);// 这表示使用的是默认的解析器.SAXBuilder是一个JDOM解析器
// 能将路径中的XML文件解析为Document对象.
// 在内存中建立一个sax文档模型,创建解析对象
try {
Document xmlDom = sax.build(xmlFile);// 解析对象调用build方法建立文档对象 ,创建文档
// 获得文件的根元素
Element root = xmlDom.getRootElement();
System.out.println("根元素是:" + root.getName());

// 获得根元素的子节点
List childList = root.getChildren();
for (Iterator iter = childList.iterator(); iter.hasNext();) {
Element person = (Element) iter.next();
String perid = person.getAttributeValue("perid");
// 取得元素的子元素(为最低层元素)的值:
String name = person.getChildTextTrim("name");
System.out.println("孩子结点是:" + person.getName());
System.out.println("perid:" + perid);
System.out.println("name:" + name);
// 注意的是,必须确定book元素的名为“name”的子元素只有一个。
person.getChild("name").setText("alterrjzjh");// 这只是对Document的修改,并没有在实际的XML文档中进行修改
}
XMLOutputter outputter = new XMLOutputter();
outputter.output(xmlDom, new FileOutputStream(xmlFile));
// 保存Document的修改到XML文件中:我们先要有一个
// XMLOutputter类,再把已经修改了的Document保存进XML文档中

// 获得第一个孩子结点
Element firstChild = (Element) childList.get(0);
// 获得孩子结点的属性
List attrList = firstChild.getAttributes();
Iterator attrIt = attrList.iterator();
while (attrIt.hasNext()) {
Attribute attr = (Attribute) attrIt.next();
System.out.println("第一个元素的属性是:" + attr.getName());
// 获得属性的值
System.out.println("属性的值是:" + attr.getValue());
// 获得属性的类型
System.out.println("属性的类型是:" + attr.getAttributeType());
}

List sonList = firstChild.getChildren();
Iterator sonIt = sonList.iterator();
while (sonIt.hasNext()) {
Element temp = (Element) sonIt.next();
System.out.println("属性" + temp.getName() + "的值是:"
+ temp.getValue());
}

} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
JDomXML test = new JDomXML();
test.parseXml(new File("persons.xml"));
}
}
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值