ねえみんなここでC#.net 4MVC3のXMLの解析について質問があります。
JavaアプリからXMLにシリアル化されたマップ(HashMap)があります。
これをドットネット側のオブジェクトに解析する必要がありますが、理解できないようです。私の調査では、にシリアル化できないことがわかりましDictionary<string, string>
た。
他の誰かが提案しましたpublic struct KeyValuePair<K, V>
が、それはうまくいかなかったようです。
また、[XmlArray("mapConfig")]
前提条件の1つはSystem.Xml.Serialization
、抽象メッセンジャークラスがあるため、使用する必要があることです。絶対に必要でない場合は、変更を避けたいと思います。
必要に応じて、Javaオブジェクトを変更することでこれが簡単になる可能性がありますが、可能であれば、すでにそこにあるオブジェクトを使用することをお勧めします。それが助けになるなら、JavaレイヤーはXstreamを使用しています。
これがJavaから送信されているXMLのチャンクです
<ConfigurationMap>
<mapConfig class="hashtable">
<entry>
<string>Key1</string>
<string>Value1</string>
</entry>
<entry>
<string>Key2</string>
<string>Value2</string>
</entry>
<entry>
<string>Key3</string>
<string>Value3</string>
</entry>
<entry>
<string>Key4</string>
<string>Value4</string>
</entry>
</mapConfig>
</ConfigurationMap>
ありがとうございます。さらに情報が必要な場合はお知らせください。答えを楽しみにしています。
- アップデート -
当たり前のことだと思いましたが、XMLが文字列の形で言及した抽象的なメッセージで戻ってきていることを述べておかなければなりません。現在の方法は以下を使用します:
XmlDocument doc = new XmlDocument();
doc.LoadXml(this.ResponseXml);
XmlElement main = doc.DocumentElement;
XmlElement cse = util.getElementsFirstChild(main, "MessagePayload");
XmlElement ccs = util.getElementsFirstChild(cse, "ReturnedObjectNameHERE");
System.Xml
次に、モデルの属性を使用してフラグメントを逆シリアル化します。
これは、いくつかの一般的なプロパティで使用するモデルの簡単な例です。
[XmlRoot("list")]
public class SearchResults : List<CSearchResult>
{
public SearchResults() { }
}
[XmlRoot("SearchResult")]
public class SearchResult
{
[XmlElement("Id")]
public string OrgUnitId { get; set; }
[XmlElement("Type")]
public Type Type { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
}
--UPDATE 2- 以下のこのモデルクラスを使用して、適切なモデルバインディングを取得できました
[XmlRoot("ConfigurationMap")]
public class ConfigurationMap
{
[XmlElement("mapConfig")]
public MapConfig mapConfig { get; set; }
}
[XmlRoot("mapConfig")]
public class MapConfig
{
[XmlArray("entry")]
public List<string> entry { get; set; }
}
これに関する唯一の問題は、Objectプロパティmapconfigがすべてのエントリを1つのリストにまとめるだけであり、モデルを考えると理にかなっています。
配列タイプをいじって、より良い結果が得られるかどうかを確認しようとしています。MapConfig
の配列を作成することを検討していEntry
ます。Entry
リストを保持するかEntry
、配列を作成して、オブジェクト構造が次のようになるようにすることができます。
MapConfig: [[key1, value1], [key2, value2], [key3, value3], [key4, value4],]
これがより良い構造であるかどうかを判断しようとしています。
これについてのアドバイスは、私がこれを実行するときに役立ちます。
ありがとう