java中dom4j解析xml文件怎么获取节点属性
2010-6-9 10:15
dom4j中,使用Element.attributes方法可以获取到节点的属性,而使用elements则可以获取相应的子节点
比如:
Element root = doc.getRootElement();
List attrList = root.attributes();
for (int i = 0; i < attrList.size(); i++) {
//属性的取得
Attribute item = (Attribute)attrList.get(i);
System.out.println(item.getName() + "=" + item.getValue());
}
List childList = root.elements();
for (int i = 0; i < childList.size(); i++) {
//子节点的操作
Element it = (Element) childList.get(i);
//对子节点进行其它操作...
}
sample:
import java.io.*;
import java.util.List;
import org.dom4j.*;
import org.dom4j.io.*;
public class XMLTest {
public void writeXML(){
Document doc = org.dom4j.DocumentHelper.createDocument();
//创建节点操作对象
Element rootElement = doc.addElement("student");
//创建根节点对象rootElement,标签名为student
rootElement.setText("hello");
//对节点设置内容,后面读取XML文件的时候可以把他取出来
rootElement.addAttribute("id","030511111");
//设置节点属性
Element name = rootElement.addElement("name");
//添加子节点
name.setText("xiaozhang");
//设置子节点内容
Element age = rootElement.addElement("age");
age.setText("23");
try {
OutputFormat fmt = new OutputFormat();
//创建输出格式对象
fmt.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(fmt);
//以输出格式为参数,创建XML文件输出对象
OutputStream out = new FileOutputStream("d:\\test.xml");
//创建输出流..
writer.setOutputStream(out);
//设置输出流
writer.write(doc);
//输出doc对象,即形成XML文件
} catch (Exception e) {
e.printStackTrace();
}
}
public void readXML(){
SAXReader reader = new SAXReader();
//创建读取对象
Document doc;
try {
doc = reader.read(new File(
"D:/javatest/workspace/Inventory/src/person.xml"));
//从test.xml文件中取得节点操作对象
Element root = doc.getRootElement();
//取得节点对象
List attrList=root.attributes();
for(int i=0;i<attrList.size();i++){
Attribute item=(Attribute) attrList.get(i);
System.out.println("Root item attribute: " + item.getName() +
" = " + item.getValue());
}
System.out.println("Root item:" + root.getName() +
" = " + root.getText().trim());
List levelOneChildList=root.elements();
for(int i=0;i<levelOneChildList.size();i++){
Element levelOneChildItem=(Element) levelOneChildList.get(i);
System.out.println("Child item: " + levelOneChildItem.getName() +
" = " + levelOneChildItem.getText());
}
//输出节点内容
} catch (Exception e) {
//e.printStackTrace();
}
}
public static void main(String[] args){
XMLTest s = new XMLTest();
s.writeXML();
s.readXML();
}
}
2010-6-9 10:15
dom4j中,使用Element.attributes方法可以获取到节点的属性,而使用elements则可以获取相应的子节点
比如:
Element root = doc.getRootElement();
List attrList = root.attributes();
for (int i = 0; i < attrList.size(); i++) {
}
List childList = root.elements();
for (int i = 0; i < childList.size(); i++) {
}
sample:
import java.io.*;
import java.util.List;
import org.dom4j.*;
import org.dom4j.io.*;