【发布时间】:2014-02-07 13:07:31
【问题描述】:
我正在尝试编写用于解析 XML 文件的 Java 代码。我想检索“功能”标签内所有“名称”元素的值。但是当我使用 NodeList nlList = element.getElementsByTagName("name");出现错误“类型元素的方法 getElementsByTagName 未定义”。
这是我的 XML 文件示例: 每个函数标签都包含多个“名称”元素,我想使用 getTextContent 来访问这些节点的值。
<function><type><specifier>private</specifier> <name>boolean</name></type> <name>canClose</name><parameter_list>(<param><decl><type><name>IEditorReference</name></type> <name>editorReference</name></decl></param>)</parameter_list> <block>{
<decl_stmt><decl><type><name>IEditorPart</name></type> <name>editor</name> =<init> <expr><call><name><name>editorReference</name>.<name>getEditor</name></name><argument_list>(<argument><expr><name>false</name></expr></argument>)</argument_list></call></expr></init></decl>;</decl_stmt>
<if>if <condition>(<expr><name>editor</name> <name>instanceof</name> <name>IContextAwareEditor</name></expr>)</condition><then> <block>{
<return>return <expr>((<name>IContextAwareEditor</name>) <name>editor</name>).<call><name>canClose</name><argument_list>()</argument_list></call></expr>;</return>
}</block></then></if>
<return>return <expr><name>true</name></expr>;</return>
}</block></function>
这是我的代码,首先我尝试检索所有“函数”元素,然后我编写了一个 for 循环来查找“函数”标签内的所有“名称”元素。
但是当我第二次使用getElementsByTagName方法时,出现错误““方法getElementsByTagName未定义类型元素”。
String name = file.getName();
File fXmlFile = new File(dirPath + name);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("function");
for (int temp = 0; temp < nList.getLength(); temp++) {
NodeList nList1 = nList.item(temp).getChildNodes();
Node n = nList1.item(temp);
if (n.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) n;
NodeList nlList = eElement.getElementsByTagName("name");
}
}
【问题讨论】:
-
它在哪一行显示错误,在您向我们展示的内容中是哪一行?如果它真的是在说“类型元素”——小写——那么你正在使用一个名为 element 的类,它与 Element 不同并且不支持该方法。
标签: java xml xml-parsing