2014-12-04 3 views
1

FL 태그를 여러 번 가져 오려고하지만 시도 할 때 내부 노드 목록을 보면 첫 번째 항목 만 가져옵니다. 자세한 내용은 내 출력을 참조하십시오. 이것은 내가 웹 서비스XML 구문 분석을 사용하여 XML에서 내부 노드 목록 데이터를 가져올 수 없습니다.

<response uri="/ats/private/xml/JobOpenings/getRecords"> 
    <result> 
     <JobOpenings> 
      <row no="1"> 
       <FL val="JOBOPENINGID"> 
        <![CDATA[ 100 ]]> 
       </FL> 
       <FL val="Published in website"> 
        <![CDATA[ true ]]> 
       </FL> 
       <FL val="Modified by"> 
        <![CDATA[ Admmin ]]> 
       </FL> 
       <FL val="Modified time"> 
        <![CDATA[ Yesterday ]]> 
       </FL> 
      </row> 
      <row no="2"> 
       <FL val="JOBOPENINGID"> 
        <![CDATA[ 101 ]]> 
       </FL> 
       <FL val="Published in website"> 
        <![CDATA[ true ]]> 
       </FL> 
       <FL val="Modified by"> 
        <![CDATA[ Admin ]]> 
       </FL> 
       <FL val="Modified time"> 
        <![CDATA[ 2 Days Ago ]]> 
       </FL> 
      </row> 
      <row no="3"> 
       <FL val="JOBOPENINGID"> 
        <![CDATA[ 102 ]]> 
       </FL> 
       <FL val="Published in website"> 
        <![CDATA[ true ]]> 
       </FL> 
       <FL val="Modified by"> 
        <![CDATA[ Admin ]]> 
       </FL> 
       <FL val="Modified time"> 
        <![CDATA[ 2 Days Ago ]]> 
       </FL> 
      </row> 
     <JobOpenings> 
    <result> 
</response> 

에서 가져온 XML 데이터입니다 그리고 이것은 내가 내 활동 여기

public class AndroidXMLParsingActivity extends ListActivity { 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(AppConfig.URL); // getting XML 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nodeList = doc.getElementsByTagName("row"); 

     for (int i = 0; i < nodeList.getLength(); i++) { 

      Node node = nodeList.item(i); 

      Element playlistElement = (Element) node; 

      NodeList title = playlistElement.getElementsByTagName("FL"); 

      for (int kl = 0; kl < title.getLength(); kl++) { 

       if (title.item(0).getChildNodes().item(0) != null) { 

        Element nameElement = (Element) title.item(0); 
        title = nameElement.getChildNodes(); 
        Log.v("name===>", ((Node) title.item(0)).getNodeValue()); 

       } 
      } 

     } 

    } 
} 

에 사용 된 코드입니다 출력은 다음과 같습니다

12-04 15:56:08.694: V/name===>(3918): JOBOPENINGID 100 
12-04 15:56:08.694: V/name===>(3918): JOBOPENINGID 101 
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 102 
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 103 
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 107 
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 108 
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 118 
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 200 

나를 제발 도와주세요. ...

답변

1

XmlPullParser을 XML 구문 분석에 사용하지 않는 이유는 무엇입니까? 나는 당신의 버전을 한번도 사용 해본 적이 없지만, 은 START_TAG (예를 들어)에 초점을 맞추고 발견하고자하는 태그의 이름을 쓰라고 말했기 때문에 더 나은 일을 할 것입니다. (예 : FL).

XPP은 XML 문서 전체를 읽고 주어진 START_TAG을 검색합니다. 일단 발견되면 switch 케이스 안에 원하는대로 할 수 있습니다.

+0

감사합니다! 지금은 FL 태그 값을 가져올 수 여전히 XmlPullParser를 사용하여 해당에서 데이터를 가져올 수 있지만 나는 이제 내가 가지고 그냥 "어제"를 가져올 수 있지만 "수정 된 시간"값이 필요합니다. –

+0

태그 전체를 가져오고 (START_TAG) 부분 문자열을 실행하면 태그에서 모든 것을 가져올 수 있습니다. –

+0

"val ="something "에서"something "을 얻으려면 [getAttributeValue (null,"val ")]을 사용하십시오 (http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html#getAttributeValue java.lang.String, % 20java.lang.String))은 'START_TAG'및 'getName()'에있을 때 "FL"입니다. – TWiStErRob

0

는 루프에서 제목을 덮어 쓸 수 있습니다 :

if (title.item(0).getChildNodes().item(0) != null) { 
    Log.v("name===>", ((Node) title.item(0).getChildNodes()).getNodeValue()); 
}