//需要导入包dom4j.jar jaxen.jar
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
/**
* @author fanggt
* xml解析
*/
public class XmlUtils {
//文档
private static Document doc = null;
//根节点
private static Element root = null;
public static void init(String xml){
//SAXReader reader = new SAXReader();
try {
doc = DocumentHelper.parseText(xml);
root = doc.getRootElement();
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 获取名称为nodeName的文本
* @param nodeName
* @return
*/
public static String getNodeText(String nodeName){
Node n = root.selectSingleNode("//"+nodeName);
return n.getText();
}
/**
* 获取所有名称为nodeName的节点
* @param nodeName
* @return
*/
@SuppressWarnings("unchecked")
public static List<Node> getNodeList(String nodeName){
return root.selectNodes("//"+nodeName);
}
/**
* 获取节点名称为nodeName的attrName属性
* @param nodeName
* @param attrName
* @return
*/
public static String getNodeAttribute(String nodeName,String attrName){
Node node = root.selectSingleNode("//"+nodeName);
return node.valueOf("@"+attrName);
}
/**
* 获取节点名称为nodeName的attrName属性
* @param nodeName
* @param attrName
* @return
*/
@SuppressWarnings("unchecked")
public static String getNodeAttribute(String nodeName,String attrName,int index){
List<Node> nodes = root.selectNodes("//"+nodeName+"[@"+attrName+"]");
return nodes.get(index).valueOf("@"+attrName);
}
/**
* 获取节点名称为nodeName的attrName属性 条件:改节点里面有个属性为key值为value的属性
* @param nodeName
* @param attrName
* @return
*/
@SuppressWarnings("unchecked")
public static String getNodeAttribute(String nodeName,String attrName,String key,String value){
List<Node> nodes = root.selectNodes("//"+nodeName+"[@"+key+"='"+value+"']");
return nodes.get(0).valueOf("@"+attrName);
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
File file = new File("src/111.xml");
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
BufferedReader br = new BufferedReader(isr);
//BufferedReader br = new BufferedReader(new FileReader(file));
String temp = null;
StringBuffer buffer = new StringBuffer();
while((temp=br.readLine())!=null){
buffer.append(temp).append("\n");
}
System.out.println(buffer);
XmlUtils.init(buffer.toString());
//String str = XmlUtils.getNodeText("RESPONSECONTENT");//获取只有一个的节点的text
//String str = XmlUtils.getNodeAttribute("RESPONSE-INFO", "SERNUM");//获取只有一个节点的属性
//String str = XmlUtils.getNodeAttribute("CARDPRICES", "STOCKNUM",1);//获取多个节点的第二个属性
String str = XmlUtils.getNodeAttribute("CARDPRICES", "STOCKNUM","CARDAMT","2990");//获取多个节点cardAmt=2990的stocknum的属性
System.out.println(str);
}
}
分享到:
相关推荐
NULL 博文链接:https://bbsanwei.iteye.com/blog/266394
XML节点访问的路径表达式【相对路径】和【绝对路径】的匹配原则
Dom,Sax,Xpath解析XML实例,有源码,实例。简单易用,直接可用
很不错的东东哦,包括了dom4j-1.6.1.jar,用到XPath所需的jaxen-1.1.1.jar,以及你需要参考的dom4j的API文档、格式是chm的。
dom4j和xpath的jar包,解析xml的最佳拍档.
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器...
NULL 博文链接:https://bbsanwei.iteye.com/blog/266392
Dom4j 解析XML 所使用的jar包,及添加XPath 支持所需要的 jar 包。具体使用可看我博客
XML节点访问的路径表达式【相对路径】和【绝对路径】的匹配原则,Dem4j集合XPath解析XML
dom4j+xpath 解析和创建 xml 文件的简单实例
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
Demo4j结合XPath解析XML文件路径的表达式
dom4j 和dom4j 是一款比较好用的Xml解析工具jar,其中部分功能需要xpath的支持
Java解析XML汇总DOM_SAX_JDOM_DOM4j_XPath 实例
用dom4j解析xml时,经常需要用到xpath,由于dom4j-1.6.1.jar不包括jaxen-1.1-beta-6.jar,导致使用xpath报错。 其中jaxen-full.jar是为了解决ava.lang.NoClassDefFoundError: org/jaxen/JaxenException错误。 下载的...
dom4j和xpath必备jar包对xml文档进行解析的必须jar包!
该示例实现MAVEN来进行创建的,实现了dom4j操作XML文件,包括创建XML、动态创建XML节点、更新XML节点、删除XML节点。
通过实例与步骤解析说明,能过帮助各位同仁快速掌握dom4j创建与解析xml文档,除此之外,文档还包含了创建与解析xml文档过程中可能出现的异常解决办法、xpath知识与应用和xml元素属性关系示意图,相当不错哦