我使用jdom和xpth查询一个xml,查询不出内容请问是什么原因,
程序没有报错,jdom.jar,jdom-xpath.jar,saxpaht.jar,jaxen-core.jar都引入了,而且不是xpath语法问题,因为我用javax.xml.xpath就可以查询的出,

解决方案 »

  1.   

    给你我写的这个吧,我已经用了一年多了,没有问题public class ReadXml
    {
    private String xmlpath;
    org.jdom.input.SAXBuilder builder=null;
    org.jdom.Document doc=null;
    org.jdom.Element root=null;
    java.io.InputStream input=null;
    java.io.InputStreamReader inputreader=null;
    private boolean flag=false;
    public ReadXml(String xmlpath)
    {
    this.xmlpath=xmlpath;
    try
    {
     builder=new org.jdom.input.SAXBuilder();
     doc=builder.build(xmlpath);
     root=doc.getRootElement();
     flag=true;  
    }
    catch(Exception e)
    {
    System.out.println("ReadXml(xmlpath) Fail!"+e.getMessage());
    }
    }
    public String getNodeValue(String xpathstr)
    {
    try
    {
    org.jdom.Element childNode = (org.jdom.Element)org.jdom.xpath.XPath.selectSingleNode(root,xpathstr);
             return childNode.getText();

    }
    catch(Exception e)
    {
    return "Error:getNodeValue("+xpathstr+")";
    }}public  String getNodeAttributeValue(String xpathstr,String attrName)
    {
    if(flag)
    {
    try
    {
    org.jdom.Element childNode = (org.jdom.Element)org.jdom.xpath.XPath.selectSingleNode(root,xpathstr);
            return childNode.getAttribute(attrName).getValue();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    return "Error:getNodeAttributeValue("+xpathstr+","+attrName+")";
    }
    }
    else
    {
    return "DOC_NULL";
    }
    } }
      

  2.   

    比如你的xml文件结构是这样
    <a>
    <b name="b1">
    <c1>1</c1>
    <d1>2</d1>
    </b>
    <b name="b2">
    <c2>1</c2>
    <d2>2</d2>
    </b>
    </a>调用方法:
    ReadXml rx=new ReadXml(“你的xml文件路径.xml");
    String c1=rx.getNodeValue("b[@name='1']/c1");