开发手册 欢迎您!
软件开发者资料库

Java XPath Parser - 查询XML文档

Java XPath分析器查询XML文档 - 从简单和简单的步骤学习Java XML,从基本到高级概念,包括概述,Java XML分析器,DOM分析器,解析XML文档,查询XML文档,创建XML文档,修改XML文档,SAX Parser,JDOM XML Parser,StAX Parser,XPath Parser,DOM4J Parser,XSLT,JAXB。

演示示例

这是我们需要查询的输入文本文件 :

         dinkar      kad      dinkar      85               Vaneet      Gupta      vinni      95               jasvir      singn      jazz      90   

XPathParserDemo.java

package com.it1352.xml; import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.ParserConfigurationException;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathExpressionException;import javax.xml.xpath.XPathFactory;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.w3c.dom.Node;import org.w3c.dom.Element;import org.xml.sax.SAXException;public class XPathParserDemo {   public static void main(String[] args) {            try {         File inputFile = new File("input.txt");         DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();         DocumentBuilder dBuilder;         dBuilder = dbFactory.newDocumentBuilder();         Document doc = dBuilder.parse(inputFile);         doc.getDocumentElement().normalize();         XPath xPath =  XPathFactory.newInstance().newXPath();         String expression = "/class/student[@rollno = '493']";         NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(            doc, XPathConstants.NODESET);                  for (int i = 0; i < nodeList.getLength(); i++) {            Node nNode = nodeList.item(i);            System.out.println("\nCurrent Element :" + nNode.getNodeName());                        if (nNode.getNodeType() == Node.ELEMENT_NODE) {               Element eElement = (Element) nNode;               System.out.println("Student roll no : "                   + eElement.getAttribute("rollno"));               System.out.println("First Name : "                   + eElement                  .getElementsByTagName("firstname")                  .item(0)                  .getTextContent());               System.out.println("Last Name : "                   + eElement                  .getElementsByTagName("lastname")                  .item(0)                  .getTextContent());               System.out.println("Nick Name : "                   + eElement                  .getElementsByTagName("nickname")                  .item(0)                  .getTextContent());               System.out.println("Marks : "                   + eElement                  .getElementsByTagName("marks")                  .item(0)                  .getTextContent());            }         }      } catch (ParserConfigurationException e) {         e.printStackTrace();      } catch (SAXException e) {         e.printStackTrace();      } catch (IOException e) {         e.printStackTrace();      } catch (XPathExpressionException e) {         e.printStackTrace();      }   }}

这会产生以下结果 :

Current Element :studentStudent roll no : 493First Name : VaneetLast Name : GuptaNick Name : vinniMarks : 95