java - 无法访问返回语句?

标签 java xml recursion

刚刚收到一个有关 Java 中的 return 语句以及如何使用应从 xml 语句深处返回值的方法的问题。

public static String searchNode(Node node, Node parent, String nodeResult) {
    String nodeValue = "";

    if (node.hasChildNodes()) {
        NodeList childrens = node.getChildNodes();
        for (int i = 0; i < childrens.getLength(); i++) {
            searchNode(childrens.item(i), node, nodeResult);
        }
    } else {
        nodeValue = node.getNodeValue().trim();
        if (nodeValue.length() > 0) {
            if (parent.getNodeName().equals(nodeResult)) {
                System.out.println("YESSA: " + nodeValue);
                return "2: " + nodeValue;
            }
        }
    }
    return nodeValue;
}

这是我的问题:为什么返回“2”语句从未到达?或者让我问:为什么最后的nodeValue仍然是空的?我已经测试过它,代码打印了这个“System.out.println”-东西,但从未到达那里的返回?! 如果我希望 nodeValue 填充“else”语句中的值,我必须更改什么?

编辑:

好吧,我尝试了你的建议,但不幸的是我从未得到我想要的结果。 进一步说明:

我有一个如下所示的 xml 结构:

<?xml version="1.0" encoding="UTF-8" ?>
<log>
<published>2014-03-28T15:28:36.646Z</published>
<actor>
    <objectType>person</objectType>
    <id>e1b8948f-321e-78ca-d883-80500aae71b5</id>
    <displayName>anonymized</displayName>
</actor>
<verb>update</verb>
<object>
    <objectType>concept</objectType>
    <id>a1ad6ace-c722-ffa9-f58e-b4169acdb4e3</id>
    <content>time</content>
</object>
<target>
    <objectType>conceptMap</objectType>
    <id>4b8f69e3-2914-3a1a-454e-f4c157734bd1</id>
    <displayName>my first concept map</displayName>
</target>
<generator>
    <objectType>application</objectType>
    <url>http://www.golabz.eu/content/go-lab-concept-mapper</url>
    <id>c9933ad6-dd4a-6f71-ce84-fb1676ea3aac</id>
    <displayName>ut.tools.conceptmapper</displayName>
</generator>
<provider>
    <objectType>ils</objectType>
    <url>http://graasp.epfl.ch/metawidget/1/b387b6f</url>
    <id>10548c30-72bd-0bb3-33d1-9c748266de45</id>
    <displayName>unnamed ils</displayName>
</provider>
</log>

我按照以下方式进行方法调用:

searchNode(document.getFirstChild(), null, "id")

然后,我想保存子节点的id值<id>来自<actor>在一个变量中(之后该方法应该以 break; 之类的内容终止,因为我不想获取所有 ID。只需这个 ID。

最佳答案

您不返回递归结果。您应该返回它,或者设置结果。

return searchNode(childrens.item(i), node, nodeResult);

或者 节点值 = searchNode(childrens.item(i), 节点, 节点结果);

关于java - 无法访问返回语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26633379/

相关文章:

java - Android 上下文变为空

android - Intellij IDEA 使用对齐属性格式化 XML

c# - 我计算基本括号表达式的算法的缺陷在哪里?

c# - 为什么这个递归在 C# 中不起作用?

javascript - 尝试使用递归添加数字时得到 NaN

java - 如何为 java.awt.Frame 进行键绑定(bind)?

java - 在另一个类中初始化一个类的方法

java - 有没有一种方法可以使用一个 'matches' 函数检查多个条件?

java - 将空 XML 元素打印为开始标记、结束标记

java - 缓存 XML 提要