使用XPath的步骤
以下是使用XPath解析器在解析文档时使用的步骤。
导入XML相关的软件包。
创建DocumentBuilder
从文件或数据流创建一个文档
创建XPath对象和XPath的路径表达式
编译XPath表达式使用pile() ,并由XPath.evaluate()评估计算获得一个节点列表
遍历节点列表。
检查属性
检查子元素
导入XML相关的软件包
importorg.w3c.dom.*;importorg.xml.sax.*;importjavax.xml.parsers.*;importjavax.xml.xpath.*;importjava.io.*;
创建DocumentBuilder
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();
从文件或数据流创建一个文档
StringBuilderxmlStringBuilder=newStringBuilder();xmlStringBuilder.append("<?xml version="1.0"?> ");ByteArrayInputStreaminput=newByteArrayInputStream(xmlStringBuilder.toString().getBytes("UTF-8"));Documentdoc=builder.parse(input);
构建XPath
XPathxPath=XPathFactory.newInstance().newXPath();
准备路径表达式,并计算它
Stringexpression="/class/student";NodeListnodeList=(NodeList)pile(expression).evaluate(doc,XPathConstants.NODESET);
遍历节点列表
for(inti=0;i
检查属性
//returns specific attributegetAttribute("attributeName");//returns a Map (table) of names/valuesgetAttributes();
检查子元素
//returns a list of subelements of specified namegetElementsByTagName("subelementName");//returns a list of all child nodesgetChildNodes();
演示示例:
这里是我们需要分析输入文本文件:
dinkar
kad
dinkar
85
Vaneet
Gupta
vinni
95
jasvir
singh
jazz
90
演示示例:
XPathParserDemo.java
packagecom.yiibai.xml;importjava.io.File;importjava.io.IOException;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.ParserConfigurationException;importjavax.xml.xpath.XPath;importjavax.xml.xpath.XPathConstants;importjavax.xml.xpath.XPathExpressionException;importjavax.xml.xpath.XPathFactory;importorg.w3c.dom.Document;importorg.w3c.dom.NodeList;importorg.w3c.dom.Node;importorg.w3c.dom.Element;importorg.xml.sax.SAXException;publicclassXPathParserDemo{publicstaticvoidmain(String[]args){try{FileinputFile=newFile("input.txt");DocumentBuilderFactorydbFactory=DocumentBuilderFactory.newInstance();DocumentBuilderdBuilder;dBuilder=dbFactory.newDocumentBuilder();Documentdoc=dBuilder.parse(inputFile);doc.getDocumentElement().normalize();XPathxPath=XPathFactory.newInstance().newXPath();Stringexpression="/class/student";NodeListnodeList=(NodeList)pile(expression).evaluate(doc,XPathConstants.NODESET);for(inti=0;i
这将产生以下结果:
Current Element :student
Student roll no : 393
First Name : dinkar
Last Name : kad
Nick Name : dinkar
Marks : 85
Current Element :student
Student roll no : 493
First Name : Vaneet
Last Name : Gupta
Nick Name : vinni
Marks : 95
Current Element :student
Student roll no : 593
First Name : jasvir
Last Name : singh
Nick Name : jazz
Marks : 90
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。