in here i have code about simple quiz using xml as database
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;
public class dbxml : MonoBehaviour {
static int actualLevel=1;
static int LevelMaxNumber;
static int WaipointCounter;
static string JawabanA_Character;
static string JawabanB_Character;
static string JawabanC_Character;
static string JawabanD_Character;
private string finaltext= "";
public GameObject LevelName;
public GameObject Soal_GUI;
public GameObject jawaban_GUI;
public TextAsset GameAsset;
List<Dictionary<string,string>> levels = new List<Dictionary<string,string>>();
Dictionary<string,string> obj;
// Use this for initialization
void Start () {
GetLevel ();
StartCoroutine(LevelStartInfo(1.0F));
LevelMaxNumber = levels.Count;
}
// Update is called once per frame
//void Update () {
//}
public void GetLevel()
{
XmlDocument xmlDoc = new XmlDocument ();
xmlDoc.LoadXml (GameAsset.text);
XmlNodeList levelsList= xmlDoc.GetElementsByTagName("levels");
foreach (XmlNode LevelInfo in levelsList)
{
XmlNodeList levelcontent = LevelInfo.ChildNodes;
obj= new Dictionary<string,string >();
foreach(XmlNode levelIsItens in levelcontent)
{
if(levelIsItens.Name="name")
{
obj.Add("name", levelIsItens.InnerText);
}
if(levelIsItens.Name="soal")
{
obj.Add("soal",levelIsItens.InnerText);
}
if(levelIsItens.Name="jawaban")
{
switch(levelIsItens.Attributes["name"].Value)
{
case "jawabanA": obj.Add("jawabanA", levelIsItens.InnerText);break;
case "jawabanB": obj.Add("jawabanB", levelIsItens.InnerText);break;
case "jawabanC": obj.Add("jawabanC", levelIsItens.InnerText);break;
case "jawabanD": obj.Add("jawabanD", levelIsItens.InnerText);break;
}
}
}
levels.Add(obj);
}
}
IEnumerator LevelStartInfo(float Wait)
{
string lvlName = "";
levels [actualLevel - 1].TryGetValue ("name", out lvlName);
string soal = "";
levels [actualLevel - 1].TryGetValue ("soal", out soal);
string jawaban = "";
levels [actualLevel - 1].TryGetValue ("jawabanA", out jawaban);
levels [actualLevel - 1].TryGetValue ("jawabanB", out jawaban);
levels [actualLevel - 1].TryGetValue ("jawabanC", out jawaban);
levels [actualLevel - 1].TryGetValue ("jawabanD", out jawaban);
GameObject LevelName = Instantiate (LevelName) as GameObject;
LevelName.GetComponent<GUIText> ().text = lvlName;
GameObject Soal_GUI = Instantiate (Soal_GUI) as GameObject;
Soal_GUI.GetComponent<GUIText> ().text = soal;
for (i=0; i<jawaban; i++)
{
GameObject jawaban_GUI=Instantiate(jawaban_GUI) as GameObject;
jawaban_GUI.GetComponent<GUIText>().text=jawaban;
}
}
}
I have error in foreach XML node, the error say ‘Property or indexer ‘system.XMLNode.Name’ cannot be assigned to(it is read only’
so how to fix this?