我有2種不同類型的需要使用單個類序列化的xml文件。 我無法在序列化之前使用xml解析器。這是MSMQ的典型反序列化方案。XML反序列化:相同的元素名稱,但類型不同
問題在於提供的xml中的message_string節點。
<?xml version="1.0" encoding="UTF-8"?>
<tms_msg>
<transaction>
<message_string>
<latitude>latitidue valeu</latitude>
<longitude>longitude</longitude>
</message_string>
</transaction>
</tms_msg>
和2型
<tms_msg>
<transaction>
<message_string>message string</message_string>
</transaction>
</tms_msg>
用於反序列化類是
public class transaction
{
[XmlElement("message_string", typeof(Complextype))]
public object[] StringsAndInts;
[XmlElement("message_string", typeof(string))]
public string stringValue;
}
[XmlRoot("tms_msg")]
public class tms_msg
{
[XmlElement("transaction")]
public transaction transaction;
}
public class Complextype
{
public string latitude;
public string longitude;
}
實現部分
public class Program
{
public Object CreateObject(string XMLString, Object YourClassObject)
{
XmlSerializer oXmlSerializer = new XmlSerializer(YourClassObject.GetType());
//The StringReader will be the stream holder for the existing XML file
YourClassObject = oXmlSerializer.Deserialize(new StringReader(XMLString));
//initially deserialized, the data is represented by an object without a defined type
return YourClassObject;
}
static void Main(string[] args)
{
tms_msg objempq = new tms_msg();
objempq = (tms_msg)CreateObject(txtXML.Text, objempq);
}
}
請不要提供XML解析和查找的建議元件類型。
只需添加以下到複雜類型:XMLTEXT] 公共字符串文本{獲得;組; } 您仍然可以在不使用字符串的情況下反序列化。 – jdweng