Java 迭代器不返回元素对象或不强制转换到其对应的对象?
有人能告诉我为什么这段代码中的迭代器没有返回元素对象吗?!?无法强制转换到元素对象!这是SAX的JDOM实现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();
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/>]