将节点添加到节点列表
我的目标是将节点不一次添加到NodeList,而是在每次迭代中将它们添加到循环中。我查找了NodeList的类和方法,但没有发现任何有用的东西。无论如何,这样做还是我应该使用其他接口? 要做类似下面的事情,但NodeList界面没有“添加”方法。那么我如何添加项目?将节点添加到节点列表
static NodeList tryToGetThePoint;
while(true)
{
.
.
.
if(!"script".equals(myNode.getParentNode().getNodeName()))
{
tryToGetThePoint.add=myNode;
}
关于这个关键位是:
“NodeList接口提供对节点的有序集合的抽象,没有定义或约束如何实现此集合。”
简而言之:它取决于您实施的一切。
您确定不能使用列表吗?我的意思是,这取决于这是什么?
但是,如果你确实想要实现你自己,这大概是它应该如何。
public class MyNodeList implements NodeList {
Node root = null;
int length = 0;
public MyNodeList() {}
public void addNode(Node node) {
if(root == null)
root = node;
else
root.addChild(node);
length++;
}
public Node item(int index) {
if(index < 1) return root;
Node node = root;
while(index > 0) {
node = node.getFirstChild();
if(node == null) return node;
index--;
}
return node;
}
public int getLength() {
return length;
}
}
你的例子让我有点失落 - item和getLength方法在哪里?你为什么还要实现Node?否则,我同意。 – 2012-03-18 12:04:53
是的,我在那里困惑了一下自己。列梅编辑... – 2012-03-18 12:10:38
固定,终于。 – 2012-03-18 12:24:09
你要记住,在NodeList
的节点现场 - 如果你改变他们要修改底层DOM树。因此,将这些东西添加到NodeList
并没有什么意义 - 你期望它们能在树中生活吗?
如果您只想要一个Node
与文档无关的列表,请使用List<Node>
。否则,您需要确定将节点添加到DOM树中的位置并使用常规方法。
更新:我没有注意到你声明了NodeList
- 这是行不通的,除非你像Perry Monschau说的那样自己实现它。改用List<Node>
。
哦,我明白了。是的,我想要的节点列表,但只是想知道如果NodeList也可以做到这一点。感谢您的建议:) – lonesome 2012-03-18 12:02:35
是的,NodeList实际上只是各种DOM方法的返回类型。 – 2012-03-18 13:13:11
@deporter当然是一个NodeList – lonesome 2012-03-18 11:43:51
*“当然”*为什么有人问这是否明显?今后请谨慎使用J2SE类的正确大小写。 – 2012-03-18 11:47:16
祝你好运。 – 2012-03-18 11:52:58