有两个函数可以将节点添加到节点列表中:
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.
我的代码出了什么问题?
如果不是第一个节点的孩子,它应该在哪里!?
答案 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();
}
}