各位大侠:
    离开IT业后,好久没有来csdn了。今天在解析一xml文档时,我用xpath怎么都没有效果,哪位帮我试试。
   xml文档在:
      http://www.uniprot.org/uniprot/P68250.xml
   我的path是这样写的:
      path="//comment[@type='subcellular location']";
    可是用java,怎么都解析不出来
   贴出代码如下:import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.parsers.*;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import javax.xml.xpath.XPathConstants;
import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import org.w3c.dom.Element;public class UniprotParser
{
  
   public void Parse(String protid)
   {
      try
    {
        String Url="http://www.uniprot.org/uniprot/P68250.xml";
        String path="//comment[@type='subcellular location']";
          
          DOMParser parser=new DOMParser();
   parser.parse(Url);
   Document doc=parser.getDocument();
  
  
   XPathFactory factoryXpah = XPathFactory.newInstance();
           XPath xpath = factoryXpah.newXPath();
           Object obj=xpath.evaluate(path,doc,XPathConstants.NODESET);
           NodeList list=(NodeList)obj;
           System.out.println(obj);
           System.out.println(list.getLength());
          // System.out.println(xpath.evaluate(path,doc));
          // XPathExpression expr = xpath.compile(path);
           //Object obj=expr.evaluate(entry);
          // XPathFactory.
          // System.out.println(obj.toString());
           
           // expr = xpath.compile("//name/@type");
            //System.out.println(expr.evaluate(document));
   
   //return seq;
    }catch(Exception err)
    {
     err.printStackTrace();
    }
   }

解决方案 »

  1.   

    我理你··但是不好意思··我对XML不熟悉··只知道它是HTML的升级版··貌似也很肤浅的认识··
      

  2.   

     DOMParser parser=new DOMParser();
    parser.parse(Url);
    Document doc=parser.getDocument();得到的doc是空的。
      

  3.   

    顶你,不过我刚开始学习XML,什么是Xpath都还没有搞明白呢,只能帮忙顶一下了
      

  4.   

    你这个xsd文件获取不到,所以文件不能通过验证。
    请确认xsd文件URL是对的。如果想绕过Schema验证,这样来建立Document对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setValidating(false);  
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(Url);