2
我想將對象序列化爲具有'對象'字段的XML。我想實現沒有名稱空間或屬性的XML。我能夠刪除根元素的名稱空間,但是,Object元素仍然有一個名稱空間。具有對象字段沒有命名空間的對象的C#XML序列化
我的對象序列化;
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>
但是我可以看看我自己一次,我已經找到了解決上述問題!
爲什麼沒有命名空間? –
我想發送一個C#對象到Java。我可以很好地將元數據返回到Java中,但是'Payload'的序列化,因爲它是'Object'類型,所以無法正確地在Java中反序列化。例如,向Java發送新消息(「myMD」,「myPL」)時,我的Java方法getMetadata()返回「myMD」,getPayload()返回[email protected] - 不是「myPL」 –
那是什麼必須處理命名空間? Java根本就不會理解Object。 –