![](/img/trans.png)
[英]org.xml.sax.SAXParseException while parsing XMl using XPATH
[英]XML parsing using SAX by xpath
我試圖通過使用xpath使用SAX進行XML解析。 但是,當我嘗試獲取多個節點集的數據時,不要這樣做。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.xpath.NodeSet;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class XPathEvaluator{
public void evaluateDocument(File xmlDocument){
try{
XPathFactory factory=XPathFactory.newInstance();
XPath xPath=factory.newXPath();
InputSource inputSource=new InputSource(new FileInputStream(xmlDocument));
XPathExpression
xPathExpression=xPath.compile("/catalog/journal/article[@date='January-2004']/title");
String title=xPathExpression.evaluate(inputSource);
System.out.println("Title: "+ title);
inputSource=new InputSource(new FileInputStream(xmlDocument));
String publisher=xPath.evaluate("/catalog/journal/@publisher", inputSource);
System.out.println("Publisher:"+ publisher);
String expression="/catalog/journal[@title='Java Technology']/article";
NodeSet nodes = (NodeSet) xPath.evaluate(expression, inputSource,XPathConstants.NODESET);
NodeList nodeList=(NodeList)nodes;
System.out.println("node List"+nodeList);
}
catch(IOException e){}
catch(XPathExpressionException e){}
}
public static void main(String[] argv){
XPathEvaluator evaluator=new XPathEvaluator();
File xmlDocument=new File("e://catalog-modified.xml");
evaluator.evaluateDocument(xmlDocument);
}
}
我的catalog-modified.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns:journal="http://www.w3.org/2001/XMLSchema-Instance">
<journal:journal title="XML" publisher="IBM developerWorks">
<article journal:level="Advanced" date="February-2003">
<title>Design XML Schemas Using UML</title>
<author>Ayesha Malik</author>
</article>
</journal:journal>
<journal title="Java Technology" publisher="IBM
developerWorks">
<article level="Intermediate" date="January-2004"
section="Java Technology">
<title>Service Oriented Architecture Frameworks
</title>
<author>Naveen Balani
</author>
</article>
<article level="Advanced" date="October-2003" section="Java Technology">
<title>Advance DAO Programming</title>
<author>Sean Sullivan</author>
</article>
<article level="Advanced" date="May-2002" section="Java Technology">
<title>Best Practices in EJB Exception Handling </title>
<author>Srikanth Shenoy
</author>
</article>
</journal>
如果我嘗試調用它,則不顯示任何節點集。
journal元素位於名稱空間中。 您不能忽略名稱空間。 請閱讀有關XPath和名稱空間的信息-該論壇中有數千篇關於該主題的文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.