gpt4 book ai didi

java - 递归方法解析元素

转载 作者:行者123 更新时间:2023-12-01 15:05:08 25 4
gpt4 key购买 nike

我有一个由元素 xx 和 xxt 组成的 xml。每个 xxt 包含一个或多个 xx 元素。每个 xx 都有一个“cap”和“act”属性。我需要做的是将所有 cap-act 值存储在 map 中。

现在请注意,我的 xml 可以包含 0 或不定数量的 xxt。因此,这应该递归地完成。现在,我只是在没有 xxt 元素时进行了简单的解析:

  for (Element element: (List<Element>) minfo.elements()) {
if (element.getName().equals("xx")) {
String cap = element.attributeValue("cap").trim();
String act = element.attributeValue("act").trim();
map.put(cap,act);
}
else if(element.getName().equals(xxt)){
//TODO recursive method
}
}

XML 的示例可能如下所示:

    <xx cap="Min" act="act1"/>
<xx cap="Ver" act="asd" />
<xx cap="Tan" act="fw" />
<xxt id="PR" cap="A">
<xx cap="tY" act="ate" />
<xx cap="Tn" act="bga" />
<xx cap="Tn" act="sga" />
<xxt cap="an" act="y34" />
<xx cap="Miu" act="sahg"/>
</xxt>
</xxt>
<xx cap="Mzt" act="act1"/>

最佳答案

您只需创建一个方法,该方法接受节点参数来分析并遍历其子节点。

找到“xx”后,会将其添加到 map 中。当找到“xxt”时,您可以通过将“xxt”节点作为参数传递来调用该函数。

public function void analyze(Element element) {
for (Element child : (List<Element>) element.elements()) {
if (child.getName().equals("xx")) {
String cap = child.attributeValue("cap").trim();
String act = child.attributeValue("act").trim();
map.put(cap,act);
} else if(child.getName().equals("xxt")){
analyze(child);
}
}
}

// To start recursivity
analyze(minfo);

此代码无法编译,但它是为了给您提供一个示例。

关于java - 递归方法解析元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com