2016-05-25 9 views
-1

このコードは1つの "question"タグの要素を返しますが、xmlファイル内に9つの質問要素があります。ここで間違っているのは何ですか?私はループする必要があります。ループをチェックして、1回だけループします。問題は何ですか?私は理解しています。java domパーサは最初のエンティティのみを取得します

<Results> 
    <question> 
    <eno>3</eno> 
    <qno>1</qno> 
    <qtext>The Battle of Gettysburg was fought during which war?</qtext> 
    <correctAnswer>C</correctAnswer> 
    </question> 
    <question> 
    <eno>3</eno> 
    <qno>2</qno> 
    <qtext>Neil Armstrong and Buzz Aldrin walked how many 
minutes on the moon in 1696?</qtext> 
    <correctAnswer>B</correctAnswer> 
    </question> 
</Results> 

私のソースコード:

は、ここに私のxmlであるあなたが、私はあなたがそこに変数sを使用するためのものだと思い

Node firstQuestionNode = listOfQuestions.item(0); 
              ^^^ 

ハードコードされている

NodeList listOfQuestions = doc.getElementsByTagName("question"); 
for(int s=0; s<listOfQuestions.getLength(); s++) 
     { 
      System.out.println(listOfQuestions.getLength()); 
      Node firstQuestionNode = listOfQuestions.item(0); 
      if(firstQuestionNode.getNodeType() == Node.ELEMENT_NODE){ 
       Element firstQElement = (Element)firstQuestionNode; 

       NodeList enoList = firstQElement.getElementsByTagName("eno"); 
       Element enoElement =(Element)enoList.item(s); 
       NodeList enosList = enoElement.getChildNodes(); 
       String eno=((Node)enosList.item(s)).getNodeValue().trim(); 
       System.out.println(eno); 

       NodeList qnoList = firstQElement.getElementsByTagName("qno"); 
       Element qnoElement =(Element)qnoList.item(s); 
       NodeList qnosList = qnoElement.getChildNodes(); 
       String qno= ((Node)qnosList.item(s)).getNodeValue().trim(); 
       System.out.println(qno); 

       NodeList qtextList = firstQElement.getElementsByTagName("qtext"); 
       Element qtextElement =(Element)qtextList.item(s); 
       NodeList qtextsList = qtextElement.getChildNodes(); 
       String qtext= ((Node)qtextsList.item(s)).getNodeValue().trim(); 
       System.out.println(qtext); 

       NodeList correctAnswerList = firstQElement.getElementsByTagName("correctAnswer"); 
       Element correctAnswerElement =(Element)correctAnswerList.item(s); 
       NodeList correctAnswerElementList = correctAnswerElement.getChildNodes(); 
       String correctAnswer= ((Node)correctAnswerElementList.item(s)).getNodeValue().trim(); 
       System.out.println(correctAnswer); 

       int i=st.executeUpdate("insert into question(eno,qno,qtext,correctAnswer) values('"+eno+"','"+qno+"','"+qtext+"','"+correctAnswer+"')"); 
       System.out.println("s is"+s); 
      } 
     } 

答えて

0

...そうでないかもしれませんが、あなたがしようとしていることを伝えるのは難しいです。それにかかわらず、listOfQuestionsへの参照は他になく、最初のノード以外のノードは一切検索しません。

0

jsoupを見てください。これは、具体的にはJavaのHTML DOMコードを解析するために構築されたAPIであり、数多くの機能が追加されています。また、現在抽出しようとしているのは、APIコンポーネントを使用しているLOCだけではありません。

URLに接続するための彼らのウェブサイト上での例を見て、DOM要素がちょうど2 LOCですフェッチ:

Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); 
Elements newsHeadlines = doc.select("#mp-itn b a"); 
関連する問題