2

我尝试使用一个 XML 文件,从中获取 IP 和子网列表,之后我想检查这些 IP 是否在子网内。

QueryXML getNodes = new QueryXML(Queries);  
NodeList IPs = getNodes.query();

QueryXML getSubnets = new QueryXML(Queries1);
NodeList subnets = getSubnets.query();

此时,我已经有了包含 XML 文件(Ips 和子网)中每个元素的 NodeList,但我现在的问题是,我想将这些 NodeList 转换为 Array,因此,使用以下调用构造函数的元素以两个数组作为参数。

SubnetUtilsExample findobjects = new SubnetUtilsExample(IPs, subnets); 

我用谷歌搜索了它,但我没有找到正确的方法。有人可以帮我吗?

谢谢。

4

3 回答 3

2

从 Java 8 开始,您可以使用 IntStream 和 map,其中 nodeList 是以下实例NodeList

List<Node> nodes = IntStream.range(0, nodeList.getLength())
        .mapToObj(nodeList::item)
        .collect(Collectors.toList());
于 2018-05-04T07:26:33.677 回答
1

我尝试过创建自己的方法,但不幸的是我无法以这种方式修复它。

最后我所做的是创建一个 ArrayList 并包含 Array 中每个项目的 NodeValue。然后,现在我有一个 Arraylist,其中包含我的 QueryXML 中的所有项目都可以使用。

最终代码:

ArrayList<String> IPtable=new ArrayList<String>();
QueryXML getNodes = new QueryXML(Queries);
NodeList IPs = getNodes.query();
 for (int n=0; n<IPs.getLength();n++){
  String ip =IPs.item(n).getNodeValue();
   IPtable.add(ip);
}
ArrayList<String> IPSubnet=new ArrayList<String>();
QueryXML getSubnets = new QueryXML(Queries1);
NodeList subnets = getSubnets.query();
 for (int s=0; s<subnets.getLength();s++){
String subnet =subnets.item(s).getNodeValue();
     IPSubnet.add(subnet);

}

我不确定这是正确的方法,但至少它可以正常且快速地工作。我希望它对其他人有用。

于 2013-10-21T08:46:13.740 回答
-2

您还可以通过简单地添加这段代码来将 Nodelist 转换为 Array List

var getNodesArray = [].slice.call(IPs);

console.log(getNodesArray);

于 2016-10-11T17:27:37.020 回答