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 "";
}
}
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 "";
}
}
相关文章推荐
- DOM4J处理XML方法记录,附XPATH写法
- 使用dom4j来处理xml的一些常用方法
- 使用dom4j来处理xml的一些常用方法
- java 用dom4j XPath 访问XML 元素的写法
- 在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法
- DOM4J处理XML带有命名空间的四种方法
- Java解析xml、解析xml四种方法、DOM、SAX、JDOM、DOM4j、XPath
- java 在dom4j中,使用XPath处理XML(主要对命名空间的处理)
- 用XPath处理XML时遇到的选取节点的方法
- 关于使用dom4j生成xml时特殊字符处理的解决方法
- Xpath dom4j解析带有命名空间的XML的方法
- 【转】+【改】DOM4J处理XML带有命名空间的四种方法
- dom4j中通过xpath处理带命名空间的XML文件
- 今天找到一个好的DOM4J解析XML的方法elementByID。可以通过QName获取属性。记录下~
- dom4j处理带命名空间的XML-使用XPath
- dom4j使用XPath解析XML返回null的解决方法
- SQL text字段的替换处理(无法批量更新,写法记录)
- 新兴XML处理方法VTD-XML介绍
- XML的SelectNodes使用方法以及XPath
- XML--DTD--Schema--DOM--SAX--DOM4J--XPATH