xml结构如下:
<?xml version='1.0' encoding="Shift_JIS" ?>
   <doc>
    <user>
      <userId>001</userId>
        <directory nodeName="Sophia" nodeId="1">
             <directory1 nodeName="Sophia1" nodeId="2">             
             </directory1>                                     
        </directory>
    </user>
 </doc>
Element node1=(Element)XPath.selectSingleNode(root, "/directory1[@nodeId='2']/parent::*");
System.out.println(node1);
则输出“null",但是明明directory是它的父节点啊1!
但是改为 Element node1=(Element)XPath.selectSingleNode(root, "//directory1[@nodeId='2']/parent::*");
就报错,我就是想获取nodeId为2的节点的父节点,应该如何实现,请大家帮忙看看

解决方案 »

  1.   

    Element node1=(Element)XPath.selectSingleNode(root, "/directory1[@nodeId='2']/parent::*");
    System.out.println(node1);
    则输出“null",但是明明directory是它的父节点啊1!
    ---------------------->
    /是绝对路径,//是相对路径另外,你那个异常我不知道是如何来的,XPath语法是正确的,你check一下,你root节点是否是真正的root节点。
      

  2.   

    异常如下:java.lang.NoSuchMethodError: org.jdom.Element.getParent()Lorg/jdom/Element;其实我是想实现这样一个功能:  给出任意一个<directory>的nodeId,寻找这个nodeId的 路径,比如: 给出nodeId=2,那么我希望得到001/sophia/sophia1
    xml结构如下:
    <?xml version='1.0' encoding="Shift_JIS" ?>
       <doc>
        <user>
          <userId>001</userId>
            <directory nodeName="Sophia" nodeId="1">
                 <directory nodeName="Sophia1" nodeId="2">             
                 </directory>    
                 <directory nodeName="sdfgfsdf" nodeId="4">             
                 </directory>                                  
            </directory>
        </user>
     </doc>
    需要怎样实现呢?
      

  3.   

    ROOT节点已经check了,是正确的
    SAXBuilder sb = new SAXBuilder();
             Document doc = sb.build("/Tomcat5.5/webapps/ROOT/Sample.xml");
    Element root = doc.getRootElement();
             System.out.println(root);(输出结果正确)
    通过下面语句
    Element node1=(Element)XPath.selectSingleNode(root, "//directory[@nodeId='2']");
    可以得到想找的节点,那么如何才能获得他的祖先呢?
      

  4.   

    Element node1=(Element)XPath.selectSingleNode(root, "//directory[@nodeId='2']/..");
      

  5.   

    按照楼上的报错如下;
    java.lang.NoSuchMethodError: org.jdom.Element.getParent()Lorg/jdom/Element
      

  6.   

    求人不如求己,折腾了一天终于找到解决方法了
    Element node1=(Element)XPath.selectSingleNode(root, "//directory[@nodeId='2']");
    Element node2=(Element)node1.getParent;
      

  7.   

    这个方法是可以的,但是我这一句
    Element node1=(Element)XPath.selectSingleNode(root, "/directory1@nodeId='2']/parent::*");
    是通过的,没有报错啊
      

  8.   

    那么为什么在我这里就会报错呢?你的环境变量怎么设的?
    java.lang.NoSuchMethodError: org.jdom.Element.getParent()Lorg/jdom/Element
      

  9.   

    顺便问一下,我得到了一个关于文件大小的参数,单位为byte我想将其转换为k 应该如何实现
      

  10.   

    jaxen-1.1-beta-6 + jdom 1.0