gpt4 book ai didi

java - JDOM getchildren() 仅返回一个元素

转载 作者:行者123 更新时间:2023-12-01 14:54:11 26 4
gpt4 key购买 nike

XML:

<root>
<foz>
....
<row>
<column>PD1</column>
<column>PD2</column>
<column>PD3</column>
</row>
...
</foz>
</root>

JAVA:

      FileInputStream fin;  
fin = new FileInputStream(zip); //zip is a File Object
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = null;
SAXBuilder builder = new SAXBuilder();
Document document = (Document)builder.build(zin);

Element rootNode = document.getRootElement();
List list = rootNode.getChildren("foz");

for ( int i = 0; i < list.size(); i++ ) {
Element node = (Element) list.get(i);

List li = node.getChildren("row");
for ( int j = 0; j < li.size(); j++ ){
Element nodePda = (Element) li.get(j);
String id = nodePda.getChildTextTrim("column");
...
}
}
...

我不明白为什么这句话“rootNode.getChildren(“foz”);”仅返回列表“li”中的一个元素,返回 PD1 但不返回 PD2 和 PD3 值。有人可以帮助我吗?

提前致谢!

最佳答案

JDOM 似乎正在做正确的事情...在您的示例中, 根节点只有一个子“foz”,因此 rootnode.getChildren("foz") 返回一个列表一个元素。

然后,您采用该一个 foz 元素,并(成功)获得所有“行”子元素。现在,对于每个“行”元素,您可以调用 getChildText(“column”) 方法。这将始终找到第一个名为“column”的子元素并返回其文本值,因此,您仅获得值“PD1”。请参阅此处的文档:getChildText(String)这又在这里引用:getChild(java.lang.String)

底线是 JDOM 正在执行您要求它执行的操作。

你应该做的是:

  • 升级到 JDOM 2.x - 它将有助于值的转换,并且速度更快、更新更多且支持更好。
  • 在行元素内使用另一个循环并调用 getChildren("column"),并获取每个“列”子元素的文本。

罗尔夫

关于java - JDOM getchildren() 仅返回一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478042/

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