/**
*
*/
package org.anbo.xml.parser;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* @author lyh
* @author Apr 13, 2010
*/
public class Dom4jParser {
private static void parseXml(String filePath){
//创建解析器
SAXReader reader = new SAXReader();
//开始解析
try {
//解析整个XML文件的结果返回Document
Document doc = reader.read(Dom4jParser.class.getClassLoader()
.getResourceAsStream(filePath));
//获得根元素
Element root = doc.getRootElement();
//System.out.println(root.getName());
//Element.elementText:取当前元素的指定的子元素的文本
//String baen = root.elementText("bean");
//Element.element("element_name"):获得当前元素指定子元素对象
//Element.elementIterator取得当前元素多个相同子元素
Iterator iter = root.elementIterator("bean");
while(iter.hasNext()){
Element bean = (Element)iter.next();
System.out.println(bean.getText());
//取得属性值
String id = bean.attributeValue("id");
String ClassName = bean.attributeValue("class");
System.out.println(id + " : " + ClassName);
/*
* Map map = new HashMap();
* map.put(id,className);
*/
}
//System.out.println(name);
} catch (DocumentException e) {
e.printStackTrace();
}
}
private static void parseXmlByXpath(String filePath){
//创建解析器
SAXReader reader = new SAXReader();
//开始解析
try {
//
//解析整个XML文件的结果返回Document
Document doc = reader.read(Dom4jParser.class.getClassLoader()
.getResourceAsStream(filePath));
//Document.selectNodes:以XPath的方式选择所有符合要求的节点
List beanList = doc.selectNodes("//bean");
/*指定元素路径元素
*List beanList = doc.selectNodes("beans/bean");
*/
/*所有指定元素属性.....
* List authorList = doc.selectNodes("//author/@id");
*/
for(int i = 0; i < beanList.size(); i++){
Element e = (Element)beanList.get(i);
System.out.println(e.elementText("name"));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
private static void modifyXml(String filePath){
//创建解析器
SAXReader reader = new SAXReader();
//开始解析
try {
//解析整个XML文件的结果返回Document
Document doc = reader.read(Dom4jParser.class.getClassLoader()
.getResourceAsStream(filePath));
//Document.selectNodes:以XPath的方式选择所有符合要求的节点
List beanList = doc.selectNodes("//bean");
for(int i = 0; i < beanList.size(); i++){
Element e = (Element)beanList.get(i);
e.addAttribute("age", String.valueOf(i));
}
OutputFormat format = OutputFormat.createPrettyPrint();
//format.setEncoding("GBK"); //支持中文输出
XMLWriter writer = new XMLWriter(new FileWriter(new File("new.xml")),format);
writer.write(doc);
writer.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
//parseXml("xmlparser.xml");
//parseXmlByXpath("xmlparser.xml");
modifyXml("xmlparser.xml");
}
}
dom4j_Xpath解析xml
最新推荐文章于 2023-08-22 09:51:52 发布