我正在尝试使用JavaDOM解析器为XML文档中的许多标记建立索引,以从中形成类似MIB的结构(例如
<module>
<container>
<list>
<leaf></leaf>
<leaf></leaf>
...
我希望将模块映射到1,将容器映射到1.1,将列表映射到1.1.1,将叶映射到1.1.1.1,将另一个叶映射到1.1.1.2(我已经有了这样做的方法),但在嵌套相同命名的XML标记时,我遇到了问题。以下是我创建的函数——为了简单起见,只需打印属性名
public static void traverse(Node node) {
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
// gets the current node
Node currentNode = nodeList.item(i);
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
traverse(currentNode);
}
if (currentNode.getNodeName().equals("container")) {
for (int j = 0; j < currentNode.getChildNodes().getLength(); j++) {
if (currentNode.getChildNodes().item(j).getNodeType() == Node.ELEMENT_NODE) {
Element e = (Element) currentNode.getChildNodes().item(j);
System.out.println(e.getAttribute("name") + " "
+ currentNode.getChildNodes().item(j).getNodeName());
}
}
}
}
}
下面是我试图解析的XML示例:
<container name="alarm">
<list name="config">
<leaf name="source">
<type name="larmSourceType" />
<description>
<text>The name</text>
</description>
<mandatory value="true" />
</leaf>
<leaf name="name">
<type name="atNameType" />
<description>
<text>fies each alarm within the named alarm source</text>
</list>
<container name="stat">
<leaf name="currentActiveAlarms">
<type name="atc:alarmCounterType" />
</leaf>
</container>
</container>
当我在这个程序上运行我的方法时,输出显示第二个嵌套容器节点首先被执行,其中的所有叶子都被打印出来。而我想打印所有从第一个容器,然后第二个。
我希望这有意义?P. S很抱歉格式化,我不明白。谢啦
交换代码,以便先处理当前节点,然后遍历:
public static void traverse(Node node) {
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
// gets the current node
Node currentNode = nodeList.item(i);
// Do stuff with current node first
if (currentNode.getNodeName().equals("container")) {
for (int j = 0; j < currentNode.getChildNodes().getLength(); j++) {
if (currentNode.getChildNodes().item(j).getNodeType() == Node.ELEMENT_NODE) {
Element e = (Element) currentNode.getChildNodes().item(j);
System.out.println(e.getAttribute("name") + " "
+ currentNode.getChildNodes().item(j).getNodeName());
}
}
}
// traverse deeper after having done stuff with current node (above)
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
traverse(currentNode);
}
}
}
这将在其子节点之前打印父节点,而不是反过来打印。
让我们举这个例子 js编译器知道所有的函数声明,所以我可以在< code > main < code > main(second())内部调用< code>second。我不明白递归函数是如何在函数声明内部调用同一个函数的 我的思考过程是:好吧,这是函数声明,这是函数所做的,但是如何 即使声明没有完成,我也可以调用相同的函数
我试图建模双向亲子设计,有秩序的孩子。 从父级中删除子级(例如,子级#2/3子级)时,hibernate生成的sql会导致唯一的约束冲突,因为“更新”(同级)是在“删除”(目标)之前执行的。 我使用的RDBMS(H2)不支持延迟约束。除了以下选项外,我还有哪些选择? 从架构中删除唯一约束 自己显式管理排序,而不是依赖hibernate 有什么方法可以让Hibernate生成sql,在更新之前删除吗
问题内容: 这是一个程序,它使用递归和执行程序来读取以前格式的信息站点。它工作正常,我的问题是测试程序是否完成和成功通知。 如果 levels.length = 1 ,则规则执行器运行良好,但是如果 levels.length > 1将出现错误:线程“ pool-1-thread-138”中的异常java.util.concurrent.RejectedExecutionException 问题答
我还不太理解递归,我有一些作业我不能解决。有人有主意吗? 任务1:实现一个int方法max(int[]arr,int i),该方法返回arr中所有元素的最大值和索引 这是我迄今为止的代码: 实际上它是有效的,但它的风格很差,所以我的问题是:如果没有私有静态int max,我如何实现递归方法?我不允许向该方法添加第三个参数。 任务2:实现一个布尔方法包含值(int[]arr,int val),如果a
在我的progress函数中,它将到达递归的底部,但是我期望返回的值没有改变。 这应该返回true,它符合条件(记录文本),但随后继续移动,并且始终返回false。
问题内容: 现在,如果我执行上面的语句,它将按顺序运行。在我的实际用例中,数组是动态填充的,我需要为中的每个成员执行函数。 我如何制作一个“暂停循环”,该循环将为数组中的每个项目循环,执行并等待promise被解决,然后再继续下一次迭代? 问题答案: 如果可以按问题中的情况创建与数组元素一样多的Promise,则可以整齐地重复应用fold。 但是,例如,异步函数不需要: 内置在优秀承诺库Blueb