2012-04-18 1 views
0

나는 안드로이드에서 내 목록에 XML을 구문 분석하는 방법을 정말 혼란스러워. 나는 안드로이드 여기, 내 자바 코드를 내가 실행 및 디버그, 오류가 자세한 내용 .FOR 라인 NodeList nL = doc.getElementsByTagNameNS(KEY_SEGMENT, "segment_id");에 일어 났을 때 구성 요소 <segment> 수다 좋은 얻을 getElementsByTagNameNodeList을 사용 :android에서 노드 값을 가진 XML을 구문 분석하는 방법

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

    ArrayList<HashMap<String, String>> menuItems = new 
      ArrayList<HashMap<String, String>>(); 

    String xml = XMLParser.getXmlFromUrl(); 
    Document doc = XMLParser.getDomElement(xml); 


    NodeList nL = doc.getElementsByTagNameNS(KEY_SEGMENT, "segment_id"); 
    for (int i = 0; i < nL.getLength(); i++) { 
     HashMap<String, String> map = new HashMap<String, String>(); 
     Element e = (Element) nL.item(i); 
     map.put(KEY_SEGMENT_ID, XMLParser.getValue(e, KEY_SEGMENT_ID)); 
     map.put(KEY_MAIN_SEGMENT, XMLParser.getValue(e, KEY_MAIN_SEGMENT)); 
     menuItems.add(map); 
    } 

내 xml 파일 :

<map> 
<segment segment_id="1050"> 
    <segment_id>1050</segment_id> 
    <route_id>103</route_id> 
    <canvasser_id>13</canvasser_id> 
    <order>1</order> 
    .... 
</segment> 

제발 도와주세요. 조언, 참고 자료, 링크 및 긴급히 필요하고 me.big 감사 유용한 모든 인수.

+0

먼저 아래에보십시오. 문서 맨 위에서 시작하여 "segment_id"라는 요소가 없습니다. – Chris911

+0

무엇이 오류입니까? –

+1

아마도 [어제]와 마찬가지로 'NullPointerException' 일 것입니다. (http://stackoverflow.com/questions/10168328/android-get-nodelist-attribute-from-xml-file) ... –

답변

1

DOM 파서를 사용하고 있습니다. 이 노드가 자식 요소 "SEGMENT_ID"을 얻을에서 다음 세그먼트 요소의 목록을 코드

public class XMLParsingDOMExampleActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try{ 
    URL url = new URL("http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml"); 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(url.openStream())); 
      doc.getDocumentElement().normalize(); 

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

      Node node = nodeList.item(0); 

      Element fstElmnt = (Element) node; 
      NodeList nameList = fstElmnt.getElementsByTagName("name"); 
      Element nameElement = (Element) nameList.item(0); 
      nameList = nameElement.getChildNodes(); 
      Log.i("Name", ((Node) nameList.item(0)).getNodeValue()); 

      NodeList websiteList = fstElmnt.getElementsByTagName("website"); 
      Element websiteElement = (Element) websiteList.item(0); 
      websiteList = websiteElement.getChildNodes(); 
      Log.i("Website",((Node) websiteList.item(0)).getNodeValue()); 

      Log.i("Website Category", websiteElement.getAttribute("category")); 

    } 
    catch(Exception e) { 

     e.printStackTrace(); 

    } 
} 

}

You can find SAXParser as well on this blog

+0

thanks @ ValayPatel.It works 나를 위해 :-) –

관련 문제