2013-01-12 2 views
0

대륙의 이름을 ListView에 표시하려면 listcontinents이라고합시다. 예를 들어 미국을 선택하면 거기에 모든 주를 표시하고 싶습니다. 전화 번호는 입니다. ListStates입니다. 특정 주를 선택하면 해당 주에있는 모든 도시를 표시하고 싶습니다. ListCity. 도시를 선택하면 해당 도시에 대한 정보를 표시하고 싶습니다. listCityInfo. 이것은 제가 위에서 말한 것에 대한 요약입니다.XML 파일 작업 방법?

대륙 >>미국 >>도시 >>정보.

모든 정보가 포함 된 XML 파일을 하나 만들고 어떻게 읽을 수 있습니까? 기본적으로 나는 그것을 만드는 법을 모른다. HTML 파일에 정보가 저장되어 있으므로 XML 파일로 변환해야합니다. 이게 가야 할 길인가?

XML 파일에 모든 정보가 포함되어있는 경우 어떻게 읽습니까? XML 파일에 대륙, 주 또는 도시 만 포함되어있는 경우이 파일을 읽는 방법을 알고 있지만 모든 파일이있는 것은 아닙니다. 어떻게 작동하게합니까? 저는 각 주마다 도시를 포함하는 500 개 이상의 XML 파일을 만들고 싶지 않습니다. 시간 낭비 일 것입니다.

어떤 예를 사용하여 어떻게 작동하는지 다른 사람이 나에게 설명하거나 유용한 사이트로 연결시킬 수 있습니까?

감사합니다. 고맙습니다!

+0

음, xml을 만드는 것은 다소 단순합니다. 모든 상태 노드는 여러 도시 노드를 갖습니다. 각 도시 노드는 여러 정보 노드 등을 가질 것입니다. 큰 xml 파일이 갈 길인지 아닌지 궁금해합니다. '조회'를 수행하는 속도가 느리거나 모든 것을 메모리에 보관하는 데 비용이 많이 듭니다. 아마도 콘텐츠 용 데이터베이스를 사용하는 것이 좋습니다. –

+0

html 파일의 크기는 약 56.3KB입니다. 따라서 파싱하는 동안 속도가 느려 집니까? 이제 XML 파일을 구문 분석하고 정보를 추출하는 방법은 무엇입니까? 혀를 향한 링크? 대부분의 사람들은 내가하는 일이 아닌 웹 사이트에 연결하여 보여줍니다. – Questions

+0

최종 xml 구조의 복잡성, 파서 (SAX vs. DOM) 및 사용중인 장치에 따라 다르므로 말하기는 어렵습니다. SimpleXML이나 잭슨 매퍼 같은 것을 사용하는 것은 당신 쪽에서 최소한의 파싱 노력이 필요할 것입니다. 실제 구문 분석 논리를 설명하고 배경 스레드에 힘든 작업을 위임하는 한 모든 자습서에서 수행 할 것이라고 말하고 싶습니다. xml 내용의 출처는 오히려 관련성이 없어야합니다. –

답변

0

다음은 어떻게 수행할까요?

  1. 정보를 SQlite 데이터베이스에 저장하고 자산 폴더에 저장하십시오. (하지만 webservice에 익숙하다면 사용하는 것이 좋으며 xml은 Android에서 엉덩이에 통증이 있기 때문에 json을 사용하십시오)
  2. expandable listview으로 채우십시오.
    Sample example.
+1

이것이 제가 가야 할 길인지 알 수 없습니다. 나는 xml 파서를 향하여 기울이고있다. 더 편리 할 것이라고 생각하지 않겠는가? – Questions

+0

데이터베이스가 더 편리합니다. 그러나 xml을 분석하는 데 익숙하다면 크기가 거대하지 않은 경우 자산 폴더의 xml 파일에 저장할 수 있습니다. 현명한 성능, 특히 큰 파일을 다루는 경우 xml을 권장하지 않습니다. 그것을하는 다른 방법이 있습니다. –

-1
File newxmlfile = new File("/data/com.itwine/emergency.xml"); 

     try{ 
       newxmlfile.createNewFile(); 
     }catch(IOException e){ 
       Log.e("IOException", "exception in createNewFile() method"); 
     } 
     //we have to bind the new file with a FileOutputStream 
     FileOutputStream fileos = null;   
     try{ 
       fileos = new FileOutputStream(newxmlfile); 
     }catch(FileNotFoundException e){ 
       Log.e("FileNotFoundException", "can't create FileOutputStream"); 
     } 
     //we create a XmlSerializer in order to write xml data 
     XmlSerializer serializer = Xml.newSerializer(); 
     try { 
       //we set the FileOutputStream as output for the serializer, using UTF-8 encoding 
         serializer.setOutput(fileos, "UTF-8"); 
         //Write <?xml declaration with encoding (if encoding not null) and standalone flag (if standalone not null) 
         serializer.startDocument(null, Boolean.valueOf(true)); 
         //set indentation option 
         serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 
         //start a tag called "root" 
         serializer.startTag(null, "root"); 
         *//**serializer.startTag(null, "Child1"); 
         serializer.endTag(null, "Child1"); 
         serializer.startTag(null, "Child2"); 
         serializer.attribute(null, "attribute", "value"); 
         serializer.endTag(null, "Child2");*//* 
         serializer.startTag(null, "EmailId"); 
         serializer.text(txtemailid.getText().toString()); 
         serializer.endTag(null,"EmailId"); 
         serializer.startTag(null, "PhoneNo"); 
         serializer.text(txtphoneno.getText().toString()); 
         serializer.endTag(null,"PhoneNo"); 
         serializer.endTag(null,"root"); 
         serializer.endDocument(); 
         //write xml data into the FileOutputStream 
         serializer.flush(); 
         //finally we close the file stream 
         fileos.close(); 
         Toast.makeText(getApplication(), "xml created",Toast.LENGTH_LONG); 
       } catch (Exception e) { 
         Log.e("Exception","error occurred while creating xml file"); 
       } 

예 way.You가 XMLserializer.Take에게 내가 예를 준 모양을 사용하여 속성과 태그를 설정 Xmlfile.and를 작성하는 FileOutputStream에 사용할 수있다.

+0

죄송 합니다만, 절대적으로 제로의 설명과 함께 OP 코드의 가장 중요한 부분 인 '이것이 가야할 길입니까?'에 대답하지 않고 코드 묶음을 버리십시오. –