`
your233
  • 浏览: 276627 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Dom4J使用XPath解析XMl

    博客分类:
  • DOM
阅读更多
//需要导入包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);
}

}
分享到:
评论

相关推荐

    Dom4j结合XPath解析XML文件路径表达式

    本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...

    使用DOM4J和xpath解析XML(一)

    NULL 博文链接:https://bbsanwei.iteye.com/blog/266394

    Dom4j 、XPath解析Xml所需的jar包和dom4j API

    在Java编程中,解析XML文档通常需要借助库,如DOM4J和XPath。DOM4J是一个灵活且功能强大的开源Java XML API,它提供了XML的读取、写入、修改和遍历等功能。XPath则是W3C标准中的一个查询语言,用于在XML文档中查找...

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    dom4j和xpath的jar包

    DOM4J可以加载和解析XML文档,然后利用XPath表达式进行数据检索。这种方式避免了传统遍历DOM树的低效,尤其是在大型XML文档中,XPath的查询性能优势尤为明显。 在Java项目中,通常会将DOM4J和XPath的jar包打包在...

    Dom,Sax,Xpath解析XML实例

    以上就是DOM、SAX和XPath解析XML的基本知识和实例应用。通过这些技术,开发者可以根据实际需求选择最适合的方式来处理XML文档。在实际项目中,这三种解析方法都有其适用场景,理解它们的工作原理和优缺点,将有助于...

    dom4j 和xpath

    - 解析XML:DOM4J可以通过SAX或者DOM方式解析XML文档,构建出文档对象模型。 - 访问元素:使用Element类来代表XML元素,可以通过方法如getElementById、getElementsByTagname等获取元素。 - 处理属性:Attribute...

    xml+dom4j+xpath资料

    DOM4J与XPath的结合使用,大大简化了XML处理的复杂度,提高了开发效率。在实际项目中,它们是处理XML数据不可或缺的工具。通过深入学习和实践,开发者可以更好地掌握XML的解析、操作和查询技术,提升项目中的数据...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    Demo4j和XPath解析XML的文件路径表达式(ZVON.org - X 路径教程)

    本教程将重点讨论如何使用Java库Demo4j与XPath一起工作,以解析XML文件中的路径表达式。 首先,我们需要理解XPath的基本概念。XPath使用路径表达式来选取XML文档中的节点,这些路径表达式类似于文件系统中的路径。...

    dom4j---xml解析jar包

    在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...

    dom4j及xpath jar包

    使用DOM4J解析XML的基本步骤如下: 1. 加载XML文件:`Document document = DocumentHelper.parseText(xmlString);` 或 `File file = new File("path_to_xml"); Document document = DocumentHelper.parseText(file)...

    dom4j和xpath必备jar包

    例如,通过DOM4J解析XML文档,然后使用XPath表达式来快速定位到特定的元素或属性,从而进行读取或修改。这对于处理大型XML文档或者需要频繁查询XML数据的场景尤其有用。 在实际应用中,"dom4j和xpath必备jar包"通常...

    dom4j中xpath的使用

    下面是一个简单的示例,展示如何使用DOM4J和XPath找到XML文档中的特定元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Node; import org.dom4j.XPath; // 创建XML...

    Dom4J采用XPath操纵XML教程及例子

    2. **解析XML文档**:使用Dom4J的`DocumentHelper`类,我们可以加载XML文件并创建一个`Document`对象,如下: ```java String xmlString = "&lt;root&gt;&lt;element attr='value'&gt;Text&lt;/element&gt;&lt;/root&gt;"; Document ...

    DOM4J_xpath

    DOM4J是一款功能强大且易于使用的XML解析库,它通过丰富的接口为开发者提供了简便的方式来处理XML文档。同时,结合XPath查询能力,可以实现对XML文档中数据的高效检索和处理。对于想要学习DOM4J和XPath的朋友来说,...

    分别使用DOM和DOM4j解析XML文件

    本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...

    dom4j解析xml文件的压缩包

    为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...

Global site tag (gtag.js) - Google Analytics