2014-01-18 4 views
0

XML 파일을 구문 분석하기위한 Java 코드를 작성하려고합니다. "function"태그 안에있는 모든 "name"요소의 값을 검색하려고합니다. 하지만 NodeList를 사용할 때 nlList = element.getElementsByTagName ("name"); "메소드 getElementsByTagName이 유형 요소에 대해 정의되지 않았습니다."오류가 있습니다.메소드 getElementsByTagName이 유형 요소에 대해 정의되지 않았습니다.

이것은 내 XML 파일 샘플입니다. 각 기능 태그에는 getTextContent를 사용하여이 노드 값에 액세스하려는 여러 "name"요소가 포함되어 있습니다.

   <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> 

이는 처음에는 "기능"의 모든 요소를 ​​검색하기 위해 노력하고 그 후 나는 "기능"태그 내부의 "이름"의 모든 요소를 ​​찾기 위해 루프를 작성, 내 코드입니다.

그러나의 오류 "나는 두 번째 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

오류가 있었으며, 우리에게 보여준 라인은 무엇입니까? 정말 "타입 요소"(소문자)를 말하면 엘리먼트와 같은 것이 아니라 그 메소드를 지원하지 않는 element라는 클래스를 사용하고 있습니다. – 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

관련 문제