尝试添加节点时的DOMException

时间:2012-03-21 07:06:12

标签: java dom

有两个函数可以将节点添加到节点列表中:

class mynodeList implements NodeList {  


    Node root ;
    int length = 0;

    public mynodeList() {}   
    public Node addFirstNode(Node node)
    {
        root=node;
        length++;
        return root;

    }
    public void addNode(Node node) {  
     //  System.out.println(root.getClass());
         root.appendChild(node);   
        length++;   
    } 
}

我创建了一个函数来添加第一个节点然后用于其余节点,它使用第二个节点。但当它转到appendChild(node);时,我会DOMException说:attempt for adding a node to a place which is not possible. 我的代码出了什么问题? 如果不是第一个节点的孩子,它应该在哪里!?

2 个答案:

答案 0 :(得分:0)

你的代码没有多大意义。它将第二个节点添加为第一个节点的子节点。这不是我对节点列表的看法。 NodeList应该维护一个兄弟姐妹列表。 也应该对这些兄弟姐妹产生任何副作用。

答案 1 :(得分:0)

好的,我希望这会回答你的问题:

  

NodeList接口提供有序的抽象   节点集合

oracle(Documentation)的意思是你可以使用你想要的任何集合,它只是创建一些抽象。所以你可以尝试下面的代码(我无法测试它,我没有Node实现),如果你想要的不仅仅是集合,我建议你看看there

public class NodeList implements org.w3c.dom.NodeList{

    List<Node> childs;

    public NodeList() {
        childs = new ArrayList<Node>();
    }   

    public void addNode(Node node) {  
        childs.add(node);
    }

    @Override
    public Node item(int i) {
        return childs.get(i);
    }

    @Override
    public int getLength() {
        return childs.size();
    }  
}