0

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と正確に一致し、文字列ではなくファイルからロードすると、クラス値が正しく入力されます。

4

1 に答える 1

1

xmlSerializerで使用可能なイベント(UnknownAttribute、UnknownElement、UnknownNode、UnreferencedObject)を確認してください。イベントが発生した場合にそれらのイベントを処理するようにイベントハンドラーを設定します。これらのイベントから得られるデータは、データがオブジェクトに表示されない理由について正しい方向に導くはずです。

于 2012-08-30T15:24:46.597 に答える