2014-01-18 4 views
0

Я пытаюсь написать Java-код для анализа XML-файла. Я хочу получить значение всех элементов «name» внутри тега «function». Но когда я использую NodeList nlList = element.getElementsByTagName («name»); есть ошибка "метод getElementsByTagName не определен для элемента типа".метод getElementsByTagName не определен для элемента типа

это мой пример файла XML: Каждый тег функции включает несколько элементов «name», которые я хочу использовать 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> 

Это мой код, сначала я пытался получить все элементы «функции» и после того, как я написал цикл, чтобы найти все элементы «имя» внутри тегов «функции».

Но есть s ошибка «» метод 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"); 
    } 
} 
+0

В какой строке говорится, что ошибка была включена, а какая строка - в том, что вы нам показали? Если он действительно говорит «элемент типа» - строчный, то вы используете класс, называемый элементом, который не является тем же, что и элемент, и не поддерживает этот метод. – keshlam

ответ

0

Когда я запустил этот фрагмент кода:.

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(fXmlFile); 
doc.getDocumentElement().normalize(); 
NodeList nList = doc.getElementsByTagName("name"); 
for(int i=0; i<nList.getLength(); i++){ 
    System.out.println(nList.item(i).getTextContent()); 
} 

я получил этот выход:

boolean 
canClose 
IEditorReference 
editorReference 
IEditorPart 
editor 

editorReference 
. 
getEditor 

editorReference 
getEditor 
false 
editor 
instanceof 
IContextAwareEditor 
IContextAwareEditor 
editor 

Надеюсь, вы пытаетесь достичь того же.Также убедитесь, что вы импортируете следующее в свою программу. (потому что вы не хотите импортировать javax.swing.text.Document):

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
+0

спасибо за ваш ответ, но мне не нужны все элементы названия. Я просто хочу, чтобы те, кто находится внутри тегов функции. У меня есть разные теги в моем XML-файле, которые я копировал здесь только теги функций. Поэтому я не хочу, чтобы элементы-имена были внутри разных тегов, мне просто нужны те, кто внутри функциональных тегов , – star2014

+0

Вы могли понять это? – Ashish

Смежные вопросы