phpスクリプトの出力からxmlデータを取得しています。それが機能する方法は、phpスクリプトがxmlデータをhtmlページに出力し、API imを使用して、そのページに表示されるすべてのテキストデータを文字列にプルすることです。
したがって、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;
}
したがって、問題は、例外が発生することなく文字列がコードから解析されることです。これにより、文字列が何らかの点で機能していると思います。ただし、クラスは引き続きnull値を返します。また、デバッガーに完全な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と正確に一致し、文字列ではなくファイルからロードすると、クラス値が正しく入力されます。