我在解析XML文件到C#中的對象時遇到了一些問題。整個項目在Unity3D中。所以我有這個XML文件:在Unity C中解析XML文件#
<Questions>
<Question>
<questionText>What is this?</questionText>
<answer>blablabla</answer>
</Question>
</Questions>
這是我的解析類:
using UnityEngine;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System;
public struct Montage {
[XmlElement("questionText")]
public string questionText;
[XmlElement("answer")]
public string answer;
}
[XmlRoot("Questions"), XmlType("Questions")]
public class ConfigScene {
[XmlArray("Questions")]
[XmlArrayItem("Question")]
public List<Montage> questions = new List<Montage>();
public static ConfigScene Load(string path) {
try {
XmlSerializer serializer = new XmlSerializer (typeof(ConfigScene));
using(FileStream stream = new FileStream(path, FileMode.Open)) {
return serializer.Deserialize(stream) as ConfigScene;
}
} catch (Exception e) {
UnityEngine.Debug.LogError ("Exception loading config file: " + e);
return null;
}
}
}
我打電話相機對象本 「裝載」 方法開始()方法:
void Start() {
confScene = ConfigScene.Load(Path.Combine(Application.dataPath, "Config/config2.xml"));
foreach(Montage o in confScene.questions) {
Debug.Log (o.questionText);
}
}
問題是我的問題列表是空的,我沒有得到任何提供的數據。我做錯了什麼?也許有人以前做過,並知道這段代碼有什麼問題?
首先確保您的文件路徑正常。這就是文件__config2.xml__存在於路徑Application.dataPath +「Config /」中。你可以在方法'Start()'012h中打印路徑。其次確保你沒有在方法'Load()'中得到異常。異常不會從那裏重新拋出。您應該檢查Unity應用程序日誌。 –
正如我看到的路徑是好的,但當我記錄整個路徑組合,我得到這樣的東西:「F:/ Unity項目/蒙太奇遊戲/資產\配置/ config2.xml」。正如你看到的斜線之一是反斜槓(Config之前)。這是一個錯誤還是什麼? – Celdur
這條路顯然是錯的。你不能混淆向前和向後的斜槓。如果你在Windows上,所有的應該是反斜槓,而在基於Unix的系統上則應該是反斜槓。現在,您可以手動連接路徑來檢查,而不是使用'Path.Combine()'。什麼是您的操作系統,BTW? –