我从 php 脚本的输出中提取 xml 数据。它的工作方式是 php 脚本将 xml 数据输出到 html 页面,而我使用的 API 将显示在该页面上的所有文本数据拉到一个字符串中。
所以 html/php 的输出应该是非常标准的 xml 格式,我研究了它并更改了 php 以确保即使是最小的细节也能正确输出。
然后我使用以下代码将字符串反序列化到我的类中。
public static object XmlDeserializeFromFile(Type type, string strPath)
{
object data;
try
{
using (StreamReader reader = new StreamReader(strPath))
{
XmlSerializer serializer = new XmlSerializer(type);
data = serializer.Deserialize(reader);
reader.Close();
}
}
catch(Exception exception)
{
Debug.LogError (exception);
data = type.GetConstructor(Type.EmptyTypes).Invoke(null);
}
return data;
}
所以问题是从我的代码中解析字符串时没有遇到异常,这让我认为它在某些方面起作用。但是,该类仍然返回空值。我还验证了字符串是否被正确收集,因为它在我的调试器中显示了完整的 xml 内容。
使用以下代码测试类 Im。
MyClass member = (MyClass)XmlDeserializeFromFile(typeof(MyClass), MyString);
if(member != null)
{
Debug.Log(member.a);
}
else
{
Debug.Log("Not Loaded");
}
我的调试器中的结果一直显示 member.a = null。
我的类属性都是公开的 {get; set;} 并完全匹配 xml,如果我从文件而不是字符串加载,则类值会正确填充。