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值。有人能帮助我吗?
提前感谢!
答案 0 :(得分:1)
JDOM似乎正在做正确的事......在你的例子中, 只有一个子节点'foz'的根节点,因此rootnode.getChildren(“foz”)返回一个列表一个元素。
然后,你拿一个foz元素,并(成功)获得所有“行”子元素。现在,使用每个'row'元素,您可以调用getChildText(“column”)方法。这将始终找到名为“column”的第一个子元素并返回其文本值,因此,您只获得值“PD1”。请参阅此处的文档:getChildText(String),后者在此处引用:getChild(java.lang.String)
底线是JDOM正在做你要求它做的事情。
你应该做的是:
罗尔夫