1.创建解析工厂

2.创建解析器

3.读xml文件,生成w3c.docment对象树

4.创建XPath对象

5.通过路径查找对象

例子:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; public class MyXPathTest { /**
* @param args
*/
public static void main(String[] args) { try {
//创建解析工厂
DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
//创建解析器
DocumentBuilder builder=documentBuilderFactory.newDocumentBuilder();
//通过解析器读取文件,生成w3c.dom.Document象树
Document document=builder.parse("conf/55.xml");
//创建XPath对象
XPath xPath=XPathFactory.newInstance().newXPath();
// <Model id="057ea377-e531-422d-a181-3371b42e5bd0">
// <Ref>
// <node></node>
// <node></node>
// </Ref>
// <Ref>
// <node></node>
// <node></node>
// </Ref>
// </Model>
//读取Model中属性id的值
String idPath="/Model/@id";
String id=(String) xPath.evaluate(idPath, document, XPathConstants.STRING);
System.out.println("id="+id); // <Model>
// <Ref>
// <node></node>
// <node></node>
// </Ref>
// <Ref>
// <node id="057ea377-e531-422d-a181-3371b42e5bd0" nodetype="DynamicMoleNode"></node>
// <node></node>
// </Ref>
// </Model>
String idNodePath="/Model/node[@nodetype='DynamicMoleNode']/@id";
String idNode=(String) xPath.evaluate(idNodePath, document, XPathConstants.STRING);
System.out.println("idNode="+idNode); // <Model>
// <Ref>
// <node></node>
// <node></node>
// </Ref>
// <Ref>
// <node id=" nodetype="DynamicMoleNode">
// <node rtf="aaaaaaaa" nodetype="Text" />
// </node>
// <node></node>
// </Ref>
// </Model>
String rtfPath="/Model/node[@nodetype='DynamicMoleNode']/node[@nodetype='Text']/@rtf";
String rtf=(String) xPath.evaluate(rtfPath, document, XPathConstants.STRING);
System.out.println("rtf="+rtf);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

同一xpath路径下有多个Element对象

String path="/XTextDocument/XElements/Element[@type='XTextBody']/XElements/Element";
NodeList nodeList=(NodeList) xPath.evaluate(path,document, XPathConstants.NODESET);
System.out.println("nodeList===="+nodeList.getLength());

XPath读取xml文件的更多相关文章

  1. 利用XPath读取Xml文件

    之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路径:通过文件管理路 径,可以按照一定的规则查找到所需要的文件:同样,依据X ...

  2. 在C#中创建和读取XML文件

    1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...

  3. 使用dom4j 读取XML文件

    第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...

  4. C#中经常使用的几种读取XML文件的方法

    XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...

  5. DOM4J读取XML文件

    最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...

  6. 菜鸟学Java(八)——dom4j详解之读取XML文件

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...

  7. IE下JS读取xml文件示例代码

    JS读取xml文件具体步骤为:创建DOM对象.加载xml文件(仅适用于IE)附示例代码,感兴趣的朋友可以参考下,希望对大家有所帮助使用javascript脚本读取xml文件,这里暂只考虑IE浏览器st ...

  8. C#三种常用的读取XML文件的方法

    下面我将介绍三种常用的读取XML文件的方法.分别是 1: 使用 XmlDocument 2: 使用 XmlTextReader 3: 使用 Linq to Xml 这里我先创建一个XML文件,名为Bo ...

  9. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

随机推荐

  1. CUDA-F-2-1-CUDA编程模型概述2

    Abstract: 本文继续上文介绍CUDA编程模型关于核函数以及错误处理部分 Keywords: CUDA核函数,CUDA错误处理 开篇废话 今天的废话就是人的性格一旦形成,那么就会成为最大的指向标 ...

  2. D. Eternal Victory(dfs + 思维)

    D. Eternal Victory time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. JavaWeb-SpringSecurity实现需求-判断请求是否以html结尾

    系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...

  4. Linux 竞态条件和临界区

    1. 临界区和竞态条件: 临界区:访问和操作共享数据的代码段: 竞态条件:当有多个线程同时进入临界区时,执行结果取决于线程的执行顺序: 如下述代码,当多个线程同时调用func函数,对共享数据sum进行 ...

  5. P2983 [USACO10FEB]购买巧克力

    P2983 [USACO10FEB]购买巧克力 题解 注意题目开 long long 贪心策略:价格从低到高,买够为止 反证:若剩下的有一个K”,比K小,那么交换,稳赚不赔 所以,在买K之前,所有比他 ...

  6. [常用的Cmd运行命令]

    打开命令提示符,有很多与系统有关的命令都可以在命令提示符中完成,比如输入ipconfig查看电脑的IP osk 打开屏幕键盘 calc  打开计算器的功能 notepad 打开记事本 mspaint ...

  7. nuros安全报告

    We believe that great technology should benefit everyone. Self-driving vehicles promise to save live ...

  8. Systemd 指令

    Systemd 指令 原文:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 一.由来 历史上,Linux 的 ...

  9. 深入学习重点分析java基础---第一章:深入理解jvm(java虚拟机) 第一节 java内存模型及gc策略

    身为一个java程序员如果只会使用而不知原理称其为初级java程序员,知晓原理而升中级.融会贯通则为高级 作为有一个有技术追求的人,应当利用业余时间及零碎时间了解原理 近期在看深入理解java虚拟机 ...

  10. JPA 或者Hibernate 实体类说明

    这里简单介绍Hibernate的Annotation注解 一.声明实体 @Entity对实体注释.任何Hibernate映射对象都要有这个注释@Table声明此对象映射到数据库的数据表,通过它可以为实 ...