各位大侠:
离开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();
}
}
离开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();
}
}
解决方案 »
- 查询功能时要鼠标点在文本框上数据才能现出来是怎么一回事啊?求大虾!!
- JAVA多线程问题
- 为什么没有 Integer.parseInt(char arg0)
- html的String不能在JEditorPane显示
- JNI技术一般在什么样的书籍里面有介绍
- 有谁知道:点击按钮后,关闭该窗口,再弹出另一个窗口的方法?
- 请教如何从java代码里传递参数给调用的DLL里的C函数参数?
- 谁知道有没有java字节吗浏览器之类的软件
- package oracle.jdbc do not exist是什么意思?
- JavaScript里怎么判断一个字符型变量是不是一个有效的日期?
- 提供一些面试题
- 大家看看为什么方法里面相同类的不同对象被修改了
parser.parse(Url);
Document doc=parser.getDocument();得到的doc是空的。
请确认xsd文件URL是对的。如果想绕过Schema验证,这样来建立Document对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(Url);