Java 迭代器不返回元素对象或不强制转换到其对应的对象?

Java 迭代器不返回元素对象或不强制转换到其对应的对象?,java,jdom,Java,Jdom,有人能告诉我为什么这段代码中的迭代器没有返回元素对象吗?!?无法强制转换到元素对象!这是SAX的JDOM实现 org.xml.sax.InputSource inStream = new org.xml.sax.InputSource(); inStream.setCharacterStream(new java.io.StringReader(temp)); SAXBuilder builder = new SAXBuilder();

有人能告诉我为什么这段代码中的迭代器没有返回元素对象吗?!?无法强制转换到元素对象!这是SAX的JDOM实现

        org.xml.sax.InputSource inStream = new org.xml.sax.InputSource();

        inStream.setCharacterStream(new java.io.StringReader(temp));


        SAXBuilder builder = new SAXBuilder();

        Document doc = builder.build(inStream);   
        ArrayList<String> queries = new ArrayList<String>();
        Element root = doc.getRootElement();

        Iterator elemIter = root.getDescendants();

        while (elemIter.hasNext()) {

            **Element tempElem = (Element)elemIter.next();** 
            String CDATA = tempElem.getChildText("ZQuery");
            queries.add(CDATA);
            elemIter.next();
        }
org.xml.sax.InputSource inStream=new org.xml.sax.InputSource();
inStream.setCharacterStream(新的java.io.StringReader(temp));
SAXBuilder=新SAXBuilder();
文档文档=生成器生成(流程内);
ArrayList查询=新建ArrayList();
元素根=doc.getRootElement();
迭代器elemIter=root.getDescents();
while(elemIter.hasNext()){
**元素tempElem=(元素)elemIter.next();**
字符串CDATA=tempElem.getChildText(“ZQuery”);
添加(CDATA);
elemIter.next();
}

考虑以下XML文档:

<root>
    <child/>
</root>

根的后代是:

  • 包含换行字符+4个空格的文本节点
  • 子元素
  • 包含换行符的文本节点
另外,
getsubstands
遍历所有子体,而不仅仅是元素的直接子体。我很确定这不是你想要的。

你需要将

XML

输出

[Element: <child1/>]
[Element: <child11/>]
[Element: <child12/>]
[Element: <child2/>]
[元素:]
[要素:]
[要素:]
[要素:]

我建议遍历整个树并将类型写入日志。然后你会看到你是否在寻找错误的节点?非常感谢你的帮助!!!你和帮助你的人都是超级明星
 SAXBuilder builder = new SAXBuilder();
 Document document = builder.build(new File("src/com/foo/test.xml"));
 Element root = document.getRootElement();
 ElementFilter filter = new ElementFilter();
 Iterator i = root.getDescendants(filter);
 while (i.hasNext()) {
     Element element = (Element) i.next();
     System.out.println(element);
 }
[Element: <child1/>]
[Element: <child11/>]
[Element: <child12/>]
[Element: <child2/>]