2014-06-12 2 views
0

나는 아래의 XML을구문 분석 된 XML 데이터를 SQLite, android에 저장 하시겠습니까?

<?xml version="1.0" encoding="UTF-8"?> 
     <DataList Name="DistributorList"> 
    <Distributor Id="Select" Name="Select"> 
    <Town Id="Select" Name="Select"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    </Town> 
</Distributor> 
<Distributor Id="107" Name="Royal Motors"> 
    <Town Id="Select" Name="Select"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    </Town> 
    <Town Id="21" Name="Gurgaon"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    </Town> 
</Distributor> 
<Distributor Id="109" Name="ALI DISTRIBUTOR POINT"> 
    <Town Id="Select" Name="Select"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    </Town> 
    <Town Id="21" Name="Gurgaon"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    </Town> 
</Distributor> 
<Distributor Id="144" Name="Goyal Accessories"> 
    <Town Id="Select" Name="Select"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    </Town> 
    <Town Id="22" Name="Faridabad"> 
    <Beat Id="Select" Name="Select"> 
     <Dealer Id="Select" Name="Select" /> 
    </Beat> 
    <Beat Id="1" Name="Area1"> 
     <Dealer Id="Select" Name="Select" /> 
     <Dealer Id="24964" Name="Kanhaiya Dial " /> 
     <Dealer Id="24964" Name="Kanhaiya Dial " /> 
     <Dealer Id="24965" Name="B.K.Mobile Service Centre" /> 
     <Dealer Id="24965" Name="B.K.Mobile Service Centre" /> 
     <Dealer Id="24966" Name="Narayan Telecom" /> 
     <Dealer Id="24966" Name="Narayan Telecom" /> 
     <Dealer Id="24967" Name="Pawan Telecom" /> 
     <Dealer Id="24967" Name="Pawan Telecom" /> 
     <Dealer Id="24968" Name="Sri Ram Communication" /> 
     <Dealer Id="24968" Name="Sri Ram Communication" /> 
    </Beat> 
    </Town> 
</Distributor> 
    </DataList> 

이 이는 XML 파싱 코드 내가 가장 실현 가능한 중 안드로이드에 하나 또는 여러 개의 SQLite는 테이블에 XML의 데이터를 저장해야

public void parseXMLAndStoreIt(XmlPullParser myParser) { 
    int event; 
    try { 
     event = myParser.getEventType(); 
     while (event != XmlPullParser.END_DOCUMENT) { 
      if (event == XmlPullParser.START_DOCUMENT) { 
       System.out.println("Start document"); 
      } else if (event == XmlPullParser.END_DOCUMENT) { 
       System.out.println("End document"); 
      } else if (event == XmlPullParser.START_TAG) { 
       System.out.println("Start tag " + myParser.getName()); 
       if (myParser.getName().equals("DataList")) { 
        Log.e("data list ", 
          "" + myParser.getAttributeValue(null, "Name")); 

       } else if (myParser.getName().equals("Distributor")) { 
        Log.e("dis name ", 
          "" + myParser.getAttributeValue(null, "Name")); 
        Log.e("dis id ", 
          "" + myParser.getAttributeValue(null, "Id")); 
       } else if (myParser.getName().equals("Town")) { 
        Log.e("town name ", 
          "" + myParser.getAttributeValue(null, "Name")); 
        Log.e("Town id ", 
          "" + myParser.getAttributeValue(null, "Id")); 
       } else if (myParser.getName().equals("Beat")) { 
        Log.e("beat name ", 
          "" + myParser.getAttributeValue(null, "Name")); 
        Log.e("beat id ", 
          "" + myParser.getAttributeValue(null, "Id")); 
       } else if (myParser.getName().equals("Dealer")) { 
        Log.e("dealer name ", 
          "" + myParser.getAttributeValue(null, "Name")); 
        Log.e("delaer id ", 
          "" + myParser.getAttributeValue(null, "Id")); 
       } 
      } else if (event == XmlPullParser.END_TAG) { 
       System.out.println("End tag " + myParser.getName()); 
      } else if (event == XmlPullParser.TEXT) { 
       System.out.println("Text " + myParser.getText()); 
      } 
      event = myParser.next(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

입니다. 마을, 박자 및 딜러 데이터가 여러 개있을 수 있습니다.

테이블 행은 어떻게 데이터를 저장 할

dist_id 
    dist_name 
    town_id 
    town_name 
    beat_id 
    beat_name 
    dealer_id 
    dealer_name 

입니까? 나는 그것에 대해 어떤 단서도 얻지 못하고있다. 표는 XML의 해당 데이터로 채워야합니다.

+0

얼마나 많은 테이블이있을 것이다 :이 후

, 표에서 행은 다음과 같이 보일 것인가? 단 하나 또는 네 개의 테이블 .. –

+0

단일 테이블에만 – WISHY

답변

1
  1. datas에 대한 클래스를 생성 ... 이는 다음과 같은 데이터 유형 XML 파일에서 데이터를 가져 오는 중 오류 동안 ...

    class myData{ 
    dist_id 
        dist_name 
    town_id 
    town_name 
    beat_id 
    beat_name 
    dealer_id 
    dealer_name 
    } 
    
  2. 당신이 MYDATA 객체를 생성하는 ArrayList를

  3. 을 만들 수 있습니다 모든 레코드에 대해이 목록에 추가하십시오 ..
  4. 마지막에이 목록을 보내고 DataHelper 클래스를보고 모든 레코드를 테이블에 저장하십시오 ..

업데이트 :

class myData{ 
    dist_id 
     dist_name 
    town_id 
    town_name 
    beat_id 
    beat_name 
ArrayList<Dealer> 
} 

class Dealer{ 
dealer_id 
    dealer_name 
} 
+0

나는 테이블을 만들고 Sqlite에 레코드를 삽입하는 방법을 알고 있다고 가정합니다. –

+0

내가 아는 YAHA – WISHY

+0

하나의 디스트리뷰터에게 여러 개의 딜러가있을 수 있습니다. 이 경우이 클래스는 크립합니다. –

0

는 다음 클래스 디자인을 사용하여 XML에서

class DataList 
{ 
    ArrayList<Data> data; 
} 

class Data 
{ 
    String distributorId; 
    String distributorName; 
    String townId; 
    String townName; 
    String beatId; 
    String beatName; 
    DealerData dealerData; 
} 

class DealerData 
{ 
    //ArrayList of DealerId, DealerName 
    ArrayList<String, String> dealerData; 
} 

구문 분석 각 대리점에 기록을하고 DataList에 추가합니다. 구문 분석을 끝내면 DataList의 각 데이터를 반복하여 테이블에 추가합니다. Dealer 데이터가 여러 개있는 문제를 해결하려면 각 판매 업체마다 별도의 행을 추가하십시오.

distributionId distributionName townId townName beatId beatName dealerId1 dealerName1 
distributionId distributionName townId townName beatId beatName dealerId2 dealerName2 
+0

내가 사용할 수있는 다른 접근법? 내가 각각의 분배 자, 딜러, 비트, 타운을 각각의 외래 키로 분리하면 테이블이 만들어지게된다. – WISHY

+0

귀하의 용도에 따라 다릅니다. 이 질문에서 딜러 데이터가 여러 개가 될 수 있다고 지정했을뿐입니다. 언급 한 접근 방식은 꽤 간단합니다. –

+0

실제로 타운, 비트 및 딜러 데이터는 여러 개일 수 있습니다. 그래서 나는이 문제에 대해 훌륭하고 완벽한 해결책을 찾고있다. – WISHY

관련 문제