java使用XPath查找xml节点
来源:互联网 发布:c数据库编程实战经典 编辑:程序博客网 时间:2024/06/05 12:05
原文地址:http://outofmemory.cn/code-snippet/2778/java-usage-XPath-seek-xml-jiedian
java 代码,通过xpath 从xml文件中查找到节点,并可转换成String输出。
package cn.outofmemory.snippets.core;import java.io.File;import java.io.FileInputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathFactory;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class FindElementsByAbsoluteLocationWithXPath { public static void main(String[] args) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new FileInputStream(new File("in.xml"))); XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); String expression; Node node; NodeList nodeList; // 1. root element expression = "/*"; node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE); System.out.println("1. " + node.getNodeName()); // 2. root element (by name) expression = "/rss"; node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE); System.out.println("2. " + node.getNodeName()); // 3. element under rss expression = "/rss/channel"; node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE); System.out.println("3. " + node.getNodeName()); // 4. all elements under rss/channel expression = "/rss/channel/*"; nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET); System.out.print("4. "); for (int i = 0; i < nodeList.getLength(); i++) { System.out.print(nodeList.item(i).getNodeName() + " "); } System.out.println(); // 5. all title elements in the document expression = "//title"; nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET); System.out.print("5. "); for (int i = 0; i < nodeList.getLength(); i++) { System.out.print(nodeList.item(i).getNodeName() + " "); } System.out.println(); // 6. all elements in the document except title expression = "//*[name() != 'title']"; nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET); System.out.print("6. "); for (int i = 0; i < nodeList.getLength(); i++) { System.out.print(nodeList.item(i).getNodeName() + " "); } System.out.println(); // 7. all elements with at least one child element expression = "//*[*]"; nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET); System.out.print("7. "); for (int i = 0; i < nodeList.getLength(); i++) { System.out.print(nodeList.item(i).getNodeName() + " "); } System.out.println(); // 8. all level-5 elements (the root being at level 1) expression = "/*/*/*/*"; nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET); System.out.print("8. "); for (int i = 0; i < nodeList.getLength(); i++) { System.out.print(nodeList.item(i).getNodeName() + " "); } System.out.println(); }}
将node 转换成String 输出
public static String NodetoString(Node node) {Transformer transformer = null;String result = null;if (node == null) {throw new IllegalArgumentException();}try {transformer = TransformerFactory.newInstance().newTransformer();} catch (Exception e) {throw new RuntimeException(e.getMessage());}if (transformer != null) {try {StringWriter sw = new StringWriter();transformer.transform(new DOMSource(node), new StreamResult(sw));return sw.toString();} catch (TransformerException te) {throw new RuntimeException(te.getMessage());}}return result;}
Input:
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"> <channel> <title>Java Tutorials and Examples 2</title> <language>en-us</language> <item> <title><![CDATA[Java Tutorials 2]]></title> <link>http://www.javacodegeeks.com/</link> </item> <item> <title><![CDATA[Java Examples 2]]></title> <link>http://examples.javacodegeeks.com/</link> </item> </channel></rss>
0 0
- java使用XPath查找xml节点
- 使用XPATH查找xml文档节点
- 使用XPATH查找xml文档节点
- 使用XPATH查找xml文档节点
- Dom4j使用Xpath语法读取xml节点
- Dom4j使用Xpath语法读取xml节点
- Dom4j使用Xpath语法读取xml节点 .
- Dom4j使用Xpath语法读取xml节点 .
- 使用Xpath查询xml文档节点数据
- Dom4j使用Xpath语法读取xml节点
- Dom4j使用Xpath语法读取xml节点
- dom4j的xpath查找xml的指定节点
- dom4j的xpath查找xml的指定节点
- 使用XPath查找XML文档中的信息
- 使用xpath新增、查找、删除、上下移动节点
- php中xpath查找xml的节点和节点属性值
- 在Dom4j中使用Xpath搜索xml的元素节点
- 通过xpath读取xml节点
- Android[初级] android开发学习之(一)HelloWrold
- 正则表达式速记
- swift枚举
- jQuery中prop和attr的区别
- spdy
- java使用XPath查找xml节点
- 20151109 视图,lgwr
- Derby 数据库的应用
- Android电视开发问题收集——在实际开发中遇到的问题及其解决方案
- iOS 8下设置cell的分割线缩进separatorInset
- HIVE快速入门
- leetcode-Linked List Cycle
- MFC学习笔记之——>MFC下的TCP通信的建立
- UI界面-表格布局