XML Data Parsing on Android Platform
조회수 1448회
public class QuestContainer {
private List<QUEST> confirmed = new List<QUEST>();
private List<QUEST> complete = new List<QUEST>();
private List<QUEST> possible = new List<QUEST>();
private List<QUEST> im_possible = new List<QUEST>();
public List<QUEST> Confirmed
{
get { return confirmed; }
set { confirmed = value; }
}
public List<QUEST> Complete
{
get { return complete; }
set { complete = value; }
}
public List<QUEST> Possible
{
get { return possible; }
set { possible = value; }
}
public List<QUEST> im_Possible
{
get { return im_possible; }
set { im_possible = value; }
}
} 위는 xml데이터를 가져올 공간입니다.
불려진 xml데이터는 자동으로 분류됩니다.
[im_Possible]
[QUEST]
[Questname]시작[/Questname]
[Description]이제 시작이에요![/Description]
[Class]ALL[/Class]
[Level]0[/Level]
[STR]0[/STR]
[CON]0[/CON]
[NT]0[/INT]
[WIS]0[/WIS]
[DEX]0[/DEX]
[Title /]
[Item /]
[questType]STORY[/questType]
[difficulty]EASY[/difficulty]
[eXPEDIENT]MOV[/eXPEDIENT]
[questReward]GOLD[/questReward]
[/QUEST]
[/im_Possible]
위는 xml 데이터에 저장되는 양식입니다.
Type[] questType = { typeof(QUEST) };
XmlSerializer serializer = new XmlSerializer(typeof(QuestContainer), questType);
TextReader textReader = new StreamReader(Application.persistentDataPath + "/Quests.xml");
QuestContainer = (QuestContainer)serializer.Deserialize(textReader);
textReader.Close();
위는 현재 사용중인 방법입니다.
하지만 이 방법대로는 안드로이드 플랫폼에서 작동하지 않습니다.
이 것을 안드로이드 플랫폼에서 작동하도록 하고 싶습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
Simple이라는 안드로이드에서 동작하는 프레임웍이 있는데요.
설치
http://simple.sourceforge.net/download.php 여기서 최신버전을 받아서 안드로이드 프로젝트에 lib이라는 폴더를 만들고 다운로드받은 jar파일을 여기에 추가하세요.
이클립스라면... Project -> Select Build Path -> Select Configure Build Path -> Library -> add External Jars해서 추가해 주시구요.
사용
http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php 여기에 사용법이 나옵니다.
우선 Quest라는 클래스의 설계를 변경해 주셔야 하는데요. @element라는 어노테이션을 써야 하고, 값 마다 getQuestName같은 메소드를 만들어 주셔야 해요.
pubic class Quest{ //각 값에 @element라는 어노테이션을 붙여주고 @element private String QuestName; @element private int Level; //생성자도 만들어 주고 public Quest(String Questname, int Level){ this.QuestName = QuestName; this.Level = Level; } //각 값 마다 get메소드를 만들어 줍니다. public String getQuestname(){ return QuestName; } public int getLevel(){ return Level; } }
Serialize할때는
//Persister라는걸 이용해서 serialize합니다. Serializer serializer = new Persister(); Quest quest = new Quest("시작",0); File result = new File("Quests.xml"); serializer.write(example, result);
Deserialize할때는
Serializer serializer = new Persister(); File source = new File("Quests.xml"); Quest quest = serializer.read(Quest.class, source);
하면 됩니다.
보니까 리스트도 쓰고 싶으신것 같던데 http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#inline 참고요.
댓글 입력