由于null,无法执行getNextSibling()

时间:2014-12-12 16:06:14

标签: java xml nullpointerexception

我正在使用java..right遍历xml树现在我在使用node.getPreviousSibling()获取节点的兄弟时遇到了麻烦,这里是代码:

sibling = pointer.getPreviousSibling();
while (sibling==null){
                    System.out.println("YAAAAAA");

                    sibling = sibling.getPreviousSibling(); ///here is the error occured
                }

错误是NullPointerException。 我知道如果没有兄弟,getPreviousSibling()可以返回null。 问题是:

  1. 为什么sibling.getPreviousSibling()给了我一个错误而不是将null值分配给测试节点而不给我一个例外?
  2. 我该怎么做才能让我的代码运行得很好,即使它永远循环,因为兄弟会永远为空?
  3. 谢谢..

    编辑1:在上面的代码之前,我已经检查指针是否为空

    if(pointer==null){
    System.out.println("NULL");
    }
    

    但仍然显示指针不是null。 所以我想知道是什么触发了NullPointerException

    编辑2:我想到了另一种方式,似乎我在分配指针时出错(不确定哪一个是错误,但我确定有错误) 我的新方法是使用

    获取节点父节点
    Node parent =pointer.getParentNode();
    
    从那里我选择了我想要的孩子..

    感谢@almas和@demostene指出我正在以错误的方式调用getPreviousSibling

2 个答案:

答案 0 :(得分:2)

你应该在你的while循环中检查非null而不是null:

while (sibling != null && sibling.getPreviousSibling() != null){

而不是

while (sibling==null){

答案 1 :(得分:0)

您正在对空对象调用getPreviousSibling(),因为代码循环直到sibling变为非空。