オブジェクトを「オブジェクト」フィールドを持つ XML にシリアライズしようとしています。名前空間や属性のない XML を実現したい。ルート要素の名前空間を削除することはできますが、Object 要素には名前空間が残っています。
シリアル化するオブジェクト;
public class Message {
public String Metadata { get; set; }
public Object Payload { get; set; }
public Message() {
}
public Message(String Metadata, Object Payload) {
this.Metadata = Metadata;
this.Payload = Payload;
}
}
シリアル化する方法;
var s = new System.Xml.Serialization.XmlSerializer(typeof(Message));
var ns = new System.Xml.Serialization.XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
StringWriter writer = new StringWriter();
s.Serialize(writer, payload, ns);
writer.Close();
私の出力:
<Message>
<Metadata>myMetadata</Metadata>
<Payload xmlns:q1="http://www.w3.org/2001/XMLSchema" d2p1:type="q1:string" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">myPayload</Payload>
</Message>
私の理想的な出力:
<Message>
<Metadata>myMetadata</Metadata>
<Payload>myPayload</Payload>
</Message>
私は Java 開発者で、C# を使用するのは今日が初めてです。明らかな何かが欠けている場合はお詫び申し上げます。
(私の主な目標は、最終的に次の出力を得ることです)
<Message>
<Metadata>myMetadata</Metadata>
<Payload class="aClass">myPayload</Payload>
</Message>
しかし、上記の問題の解決策を見つけたら、自分で調べることができます!