(C#을)액세스 및 덮어 쓰기 XML 노드 내가이 XML (이 예를 목적으로 트리밍 된 것) 한
<?xml version="1.0" encoding="utf-8"?>
<levels>
<level><!-- level 1 ! -->
<name>Level 1</name>
<title>Title 01</title>
<crystal01>false</crystal01>
<crystal02>false</crystal03>
<crystal02label>Label 1</crystal03label>
<crystal03>false</crystal04>
</level>
<level><!-- level 2 ! -->
<name>Level 2</name>
<title>Title 02</title>
<crystal01>true</crystal01>
<crystal02>true</crystal03>
<crystal02label>Label 2</crystal03label>
<crystal03>false</crystal04>
</level>
</levels>
그리고 난
public class LoadXmlData : MonoBehaviour // the Class
{
public int actualLevel = 1;
static int LevelMaxNumber;
static int WaipointCounter = 0;
public static string lvlname = "";
public static string lvltitle = "";
public static string crystal01 = "";
public static string crystal02 = "";
public static string crystal02label = "";
public static string crystal03 = "";
public TextAsset XMLData;
List<Dictionary<string,string>> levels = new List<Dictionary<string,string>>();
Dictionary<string,string> obj;
void Start()
{ GetLevel();
StartCoroutine(LevelLoadInfo(0.0F));
LevelMaxNumber = levels.Count;
}
public void GetLevel()
{
XmlDocument xmlDoc = new XmlDocument(); // xmlDoc is the new xml document.
xmlDoc.LoadXml(XMLData.text); // load the file.
XmlNodeList levelsList = xmlDoc.GetElementsByTagName("level"); // array of the level nodes.
foreach (XmlNode levelInfo in levelsList)
{
XmlNodeList levelcontent = levelInfo.ChildNodes;
obj = new Dictionary<string,string>();
foreach (XmlNode levelsItens in levelcontent) // levels itens nodes.
{
if(levelsItens.Name == "name")
{
obj.Add("name",levelsItens.InnerText); // put this in the dictionary.
}
if(levelsItens.Name == "title")
{
obj.Add("title",levelsItens.InnerText); // put this in the dictionary.
}
if(levelsItens.Name == "crystal01")
{
obj.Add("crystal01",levelsItens.InnerText); // put this in the dictionary.
}
if(levelsItens.Name == "crystal02")
{
obj.Add("crystal02",levelsItens.InnerText); // put this in the dictionary.
}
if(levelsItens.Name == "crystal02label")
{
obj.Add("crystal02label",levelsItens.InnerText); // put this in the dictionary.
}
if(levelsItens.Name == "crystal03")
{
obj.Add("crystal03",levelsItens.InnerText); // put this in the dictionary.
}
}
levels.Add(obj); // add whole obj dictionary in the levels[].
}
}
IEnumerator LevelLoadInfo(float Wait)
{
levels[actualLevel-1].TryGetValue("name",out lvlname);
levels[actualLevel-1].TryGetValue("title",out lvltitle);
levels[actualLevel-1].TryGetValue("crystal01",out crystal01);
levels[actualLevel-1].TryGetValue("crystal02",out crystal02);
levels[actualLevel-1].TryGetValue("crystal02label",out crystal02label);
levels[actualLevel-1].TryGetValue("crystal03",out crystal03);
yield return new WaitForSeconds(Wait);
}
void Update()
{
}
}
모든 몇 가지 변수에 데이터를로드하기 위해이 스크립트를 사용하여 괜찮아요,하지만 정말 며칠 동안 어떤 노드에 액세스 할 수있는 기능을 만들기 위해 고군분투, 그것의 데이터를 저장하고 XML을 저장하고, 나는 다소 간단한 일이지만 그것을 이해하지 못한다 (나는 3D 아티스트, 메신저 프로그래밍 작년부터, 그래서, 아직 학습 단계에서), 예를 들어, 어떻게 내가 "crystal02"값을 편집 할 수 있을까? vel 2와 xml을 저장 하시겠습니까? 미리 감사드립니다.
XML 대신 Linq를 사용하는 것이 좋습니다. – Alireza