DOMException при попытке добавить узел - PullRequest
0 голосов
/ 21 марта 2012

есть две функции для добавления узлов в список узлов:

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 голосов
/ 21 марта 2012

Хорошо, надеюсь, это ответит на ваш вопрос:

Интерфейс NodeList обеспечивает абстракцию упорядоченного коллекция узлов

Что означает оракул ( Документация ), так это то, что вы можете использовать любую коллекцию, какую захотите, просто для создания абстракции. Так что вы можете просто попробовать следующий код (я не смог проверить его, у меня нет вашей реализации Node), и если вы хотите что-то большее, чем коллекции, я предлагаю вам взглянуть там

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();
    }  
}
0 голосов
/ 21 марта 2012

Ваш код не имеет особого смысла.Он добавляет второй узел как дочерний по отношению к первому.Это не моя идея списка узлов.NodeList должен поддерживать список братьев и сестер.Также не должен иметь побочные эффекты для этих братьев и сестер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...