xml技术之xpath,通过Xpath快速获取xml中的节点内容
2013-03-04 09:37
471 查看
package com.chen.xpath; import java.io.File; import java.io.IOException; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; public class TextXpath { private String pathString = ""; public TextXpath(String pathString){ this.pathString = pathString; } public void selectSome() throws JDOMException, IOException { File file = new File(pathString); if (!file.exists()) { System.out.println("文件不存在"); } SAXBuilder sax = new SAXBuilder(false); Document doc = sax.build(file); Element rootElement = doc.getRootElement(); // List list = rootElement.getChildren(); // this.readXml(list); // 查询绝对路径/metadata/MODULE/MODULE/OPERATE下的节点集合(包括根路径) String xpathString = "/metadata/MODULE/MODULE/OPERATE"; List elist = XPath.selectNodes(rootElement, xpathString); this.readXmlList(elist); System.out.println("************************************************************"); // 查询所有节点名字为OPERATE的节点集合 String xpathStringA = "//OPERATE"; List elistA = XPath.selectNodes(rootElement, xpathStringA); this.readXmlList(elistA); System.out.println("************************A************************************"); // 查询所有节点名字为OPERATE中KEY="hr_chenYearAction_list"的节点集合 String xpathStringB = "//OPERATE[@KEY='hr_chenYearAction_list']"; List elistB = XPath.selectNodes(rootElement, xpathStringB); this.readXmlList(elistB); System.out.println("*************************B***********************************"); // 查询所有节点中KEY="hr_chenYearAction_list"的节点集合 String xpathStringC = "//*[@KEY='hr_chenYearAction_list']"; List elistC = XPath.selectNodes(rootElement, xpathStringC); this.readXmlList(elistC); System.out.println("*************************C***********************************"); // 使用 selectSingleNode 查询所有节点中 得到第一个节点 Element String xpathStringD = "//MODULE/*"; Element element = (Element) XPath.selectSingleNode(rootElement, xpathStringD); System.out.println(element.getAttributeValue("KEY").toString()); System.out.println(element.getTextNormalize()); // this.readXmlList(elistD); System.out.println("***********************D*************************************"); /* XPATH中一些有用的函数: string concat (string, string, string*) 联接两个字符串 boolean starts-with (string, string) 判断某字符串是否以另一字符串开头 boolean contains (string, string) 判断某字符串是否包含另一字符串 string substring (string, number, number) 取子字符串 number string-length (string) 测字符串长度 number sum (node-set) 求和 number floor (number) 求小于此数的最大整数值 number ceiling (number) 求大于此数最小整数值 * */ // 查询所有节点中KEY以hr_chenYearAction开头的节点集合 String xpathStringE = "//*[starts-with(@KEY,'hr_chenYearAction')]"; List elistE = XPath.selectNodes(rootElement, xpathStringE); this.readXmlList(elistE); System.out.println("*************************E***********************************"); } /**打印结果 * * @author chen_weixian * May 4, 2012 10:53:39 AM * @param list */ public void readXmlList(List list) { for (int i = 0; i<list.size(); i++ ) { Element el = (Element) list.get(i); System.out.println(el.getAttributeValue("KEY")); System.out.println(el.getAttributeValue("TITLE")); } } public void readXml(List list) { for (int i = 0; i<list.size(); i++ ) { Element el = (Element) list.get(i); List listi = el.getChildren(); if (listi != null && listi.size() > 0) { readXml(listi); } else { System.out.println(el.getAttributeValue("KEY")); System.out.println(el.getAttributeValue("TITLE")); } } } /** * @author chen_weixian * May 4, 2012 9:06:12 AM * @param args */ public static void main(String[] args) { String pathString = "F:/workspaceA/jzProject/config/resource_shop.xml"; TextXpath textXpath = new TextXpath(pathString); try { textXpath.selectSome(); } catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- 使用xPath技术快速获取指定节点并对其修改--(xPath技术基础)
- Java+通过XPath获取XML文件中符合特定条件的节点
- [Java] 通过XPath获取XML中某个节点的属性
- XML:XPath路径定义选取节点 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式: 表达式 描述 nodename
- 通过XPathDocument、XmlDocument读取Xml文件中的节点值
- JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容
- c# XML数据解析通用工具, 获取 节点 文本内容
- 使用jdom的XPath来快速定位xml节点
- 通过xpath查询xml中的节点并修改节点元素值
- 使用jdom的XPath来快速定位xml节点
- java通过正则表达式提取XML节点内容
- 通过xpath获取对应的整个子节点信息
- 解析XML获取节点内容
- XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。
- JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容
- XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。
- xPath技术快速定位节点
- JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容
- XML节点信息获取 Xpath应用示例
- 快速读取xml节点内容