【问题标题】:XML parsing using SAX by xpath通过 xpath 使用 SAX 解析 XML
【发布时间】:2012-06-26 18:34:22
【问题描述】:

我正在尝试通过使用 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> 

如果我尝试调用它,请不要显示任何节点集。

【问题讨论】:

    标签: java xml xml-parsing sax saxparser


    【解决方案1】:

    日志元素位于命名空间中。您不能忽略命名空间。请阅读有关 XPath 和命名空间的信息 - 此论坛上有数千篇关于该主题的帖子。

    【讨论】:

      猜你喜欢
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2012-08-27
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多