您的位置:首页 > 其它

DOM4J处理XML方法记录,附XPATH写法

2013-02-14 19:18 429 查看
Java代码








package com.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.baje.sz.util.Doc;

public class Dom4jSoap {

/**
* 取根元素
* @param path
* @return
* @throws DocumentException
*/
public static Element getRoot(String path) throws DocumentException{
Document document;
SAXReader reader=new SAXReader();
document=reader.read(new File(path));
Element root=document.getRootElement();
return root;
}
public static void readSoap(Element element){
if(element.elements().size()==0){
System.out.println(element.getName()+"*="+element.getText());
return;
}

for (Iterator<Element> iter=element.elementIterator();iter.hasNext();) {
Element ele=iter.next();
if(ele.getParent().getName().equalsIgnoreCase("Envelope")){
System.out.println("-------------------------Envelope的直接子元素:"+ele.getName()+",,"+ele.attributeValue("xmlns"));

}
System.out.println(ele.getName()+"%="+ele.getText().trim());
if(ele.elements().size()!=0){
System.out.println(("element "+ele.getName()+" has "+ele.elements().size())+(ele.elements().size()==1?" subTag it is ":" subTags there are"));

readSoap(ele);
}
if(ele.getName().equals("UserName")){
System.out.println("path="+ele.getPath());
}
}
}
/**
* 获取节点的元素的值
* @param filename
* @param xmlpath="//*[name()='Date'][@id='aa']/*[name()='aaa']"

* @return
*/
public static String getElementText(String filename, String xmlpath,String encode) {
try {
Document document;
SAXReader reader=new SAXReader();
InputStream in = new FileInputStream(new File(filename));
document=reader.read(in,encode);
List list = document.selectNodes(xmlpath);
for(Iterator iter = list.iterator();iter.hasNext();){
Element e = (Element)iter.next();
return e.getText();
}
return "";
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* 取指定节点元素的属性的值
* @param filename
* @param xmlpath="//*[name()='Date'][@id='bb']/@ac"

* @param encode
* @return
*/
public static String getAttributesText(String filename, String xmlpath,String encode){
try {
Document document;
SAXReader reader=new SAXReader();
InputStream in = new FileInputStream(new File(filename));
document=reader.read(in,encode);
List list = document.selectNodes(xmlpath);
for(Iterator iter=list.iterator();iter.hasNext();){
Attribute a = (Attribute)iter.next();
return a.getText();
}
return "";
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: