2016. 3. 2. 18:36
https://blog.naver.com/nagne2011/220643685663
class Item
{
public int index;
public string name;
public Item(int index, string name)
{
this.index = index;
this.name = name;
}
public void ShowInfo()
{
Console.WriteLine("Item Index : {0}, Item Name : {1}", index, name);
}
}
class SaveXml
{
private List<Item> itemList = null; //리스트에 저장할 예정
private const string path = "./SaveXml"; //주소는 이곳이다.
public SaveXml()
{
itemList = new List<Item>(); //리스트 만듬
itemList.Add(new Item(1, "청동검")); //새로운 아이템 생성
itemList.Add(new Item(2, "가죽갑옷"));
itemList.Add(new Item(3, "가죽방패"));
itemList.Add(new Item(4, "포션"));
Console.WriteLine("디폴트 아이템 생성 완료");
for(int i=0; i <itemList.Count; ++i) //만든 아이템들 정보를 담아준다
{
itemList[i].ShowInfo();
}
Directory.CreateDirectory(path);
}
//저장시작
public void SaveData(string fileName = "SaveXml.xml")
{
XmlWriter xmlWriter = null;
try
{
XmlWriterSettings setting = new XmlWriterSettings();
setting.Indent = true; //띄어쓰기 사용(아마도)
setting.Encoding = Encoding.UTF8; //<?xml version="1.0" encoding="UTF-8"?> (만들어진 XML파일에서 확인가능) UTF8로 생성
string fullPath = path + "/" + fileName;
xmlWriter = XmlWriter.Create(fullPath, setting); //생성
}
catch( Exception e)
{
Console.WriteLine(e.Message);
return;
}
xmlWriter.WriteStartElement("ItemList");
for( int i=0 ; i<itemList.Count ; ++i)
{//리스트를 전부 돌면서 해당 검색
xmlWriter.WriteStartElement("Item");
xmlWriter.WriteStartElement("Index");
xmlWriter.WriteString(itemList[i].index.ToString());
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("Name");
xmlWriter.WriteString(itemList[i].name);
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
}
xmlWriter.WriteEndElement();
xmlWriter.Close();
}
}
class LoadXml
{
private List<Item> itemList = null;
private const string path = "./SaveXml";
public LoadXml()
{
itemList = new List<Item>();
}
//LoadXmlDataFromFile방식
public void LoadXmlDataFromFile(string fileName = "SaveXml.xml")
{
XmlReader xmlReader = null;
try
{
XmlReaderSettings xmlSetting = new XmlReaderSettings();
xmlSetting.IgnoreWhitespace = true;
xmlSetting.IgnoreComments = true;
string fullPath = path + "/" + fileName;
//읽은 내용을 기반으로 xmlReader에 저장
xmlReader = XmlReader.Create(fullPath, xmlSetting);
itemList.Clear();
while (xmlReader.ReadToFollowing("Index"))
{//xmlReader를 돌면서 해당 내용에 맞게 아이템을 Add한다
int index = xmlReader.ReadElementContentAsInt();
string name = xmlReader.ReadElementContentAsString();
itemList.Add(new Item(index, name));
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
xmlReader.Close();
PrintXmlData();
}
//LoadXmlDataFromString방식
public void LoadXmlDataFromString()
{
XmlReader xmlReader = null;
string xmlString =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<ItemList> " +
" <Item> " +
" <Index>11</Index> " +
" <Name>청동검</Name> " +
" </Item> " +
" <Item> " +
" <Index>12</Index> " +
" <Name>가죽갑옷</Name> " +
" </Item> " +
" <Item> " +
" <Index>13</Index> " +
" <Name>가죽방패</Name> " +
" </Item> " +
" <Item> " +
" <Index>14</Index> " +
" <Name>포션</Name> " +
" </Item> " +
"</ItemList> ";
try
{
XmlReaderSettings xmlSetting = new XmlReaderSettings();
xmlSetting.IgnoreWhitespace = true;
xmlSetting.IgnoreComments = true;
StringReader reader = new StringReader(xmlString);
xmlReader = XmlReader.Create(reader, xmlSetting);
itemList.Clear();
while (xmlReader.ReadToFollowing("Index"))
{
int index = xmlReader.ReadElementContentAsInt();
string name = xmlReader.ReadElementContentAsString();
itemList.Add(new Item(index, name));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
xmlReader.Close();
PrintXmlData();
}
public void PrintXmlData()
{//리스트에 저장된 대로쭉 출력해준다
Console.WriteLine("읽어들인 아이템 목록");
for( int i=0 ; i<itemList.Count ; ++i)
{
itemList[i].ShowInfo();
}
}
}
//파일 입출력(XML)
Console.WriteLine("\n\n\n\n\nXML 파일입출력==================");
SaveXml saveXml = new SaveXml();
saveXml.SaveData();
LoadXml loadXml = new LoadXml();
loadXml.LoadXmlDataFromFile();
loadXml.LoadXmlDataFromString();
728x90
'개발공부' 카테고리의 다른 글
개발툴 - 0 - Git (0) | 2022.02.15 |
---|---|
예외처리 try, catch, throw (0) | 2022.02.14 |
c# 텍스트 저장 (0) | 2022.02.13 |
c# try-catch (0) | 2022.02.13 |
c# 함수 상속 (0) | 2022.02.13 |