我有一个 XML 字符串
<?xml version="1.0"?>
<FullServiceAddressCorrectionDelivery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AuthenticationInfo xmlns="http://www.usps.com/postalone/services/UserAuthenticationSchema">
<UserId xmlns="">FAPushService</UserId>
<UserPassword xmlns="">Password4Now</UserPassword>
</AuthenticationInfo>
<FullServiceAddressCorrectionDelivery d2p1:MessageGroupID="3599" d2p1:TotalMessageCount="1" d2p1:MessageSerialNumber="1" xmlns:d2p1="http://idealliance.org/Specs/mailxml10.0/mailxml_defs" xmlns="http://idealliance.org/Specs/mailxml10.0A/mailxml_dd">
<SubmittingParty d2p1:MaildatUserLicense="USPS" />
<SubmittingSoftware d2p1:SoftwareName="PostalOne" d2p1:Vendor="USPS" d2p1:Version="27.0" />
<PushMessageID>3599001</PushMessageID>
</FullServiceAddressCorrectionDelivery>
</FullServiceAddressCorrectionDelivery>
和服务合同,如
[ServiceContract(Namespace = http://www.usps.com/postalone/services/DataDistributionPushMailXML10A")]
public interface DataDistributionPushMailXML10APortType
{
[OperationContract]
[XmlSerializerFormat]
FullServiceAddressCorrectionDelivery PushFullServiceAddressCorrectionDelivery(FullServiceAddressCorrectionDelivery obj);
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract(Name = "FullServiceAddressCorrectionDelivery", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
[Serializable]
public class FullServiceAddressCorrectionDelivery
{
[XmlElement("AuthenticationInfo",
Namespace = "http://www.usps.com/postalone/services/UserAuthenticationSchema")]
[DataMember]
public AuthenticationInfoType AuthenticationInfo
{
get;
set;
}
[XmlElement("FullServiceAddressCorrectionDelivery",
Namespace = "http://idealliance.org/Specs/mailxml10.0A/mailxml_dd")]
[DataMember]
public FullServiceAddressCorrectionDelivery1 FullServiceAddressCorrectionDelivery1
{
get;
set;
}
}
[DataContract]
[Serializable]
public class AuthenticationInfoType
{
[DataMember]
[XmlElement("UserId", Namespace = "")]
public string UserId
{
get;
set;
}
[DataMember]
[XmlElement("UserPassword", Namespace = "")]
public string UserPassword
{
get;
set;
}
}
[DataContract]
[Serializable]
public class ParticipantIDType
{
private string _maildatUserLicense;
[DataMember]
[XmlAttribute("MaildatUserLicense",
Namespace ="http://idealliance.org/Specs/mailxml10.0/mailxml_defs")]
public string MaildatUserLicense
{
get
{
return this._maildatUserLicense;
}
set
{
this._maildatUserLicense = value;
}
}
}
[DataContract]
[Serializable]
public class FullServiceAddressCorrectionDelivery1
{
[DataMember]
[XmlElement("SubmittingParty")]
public ParticipantIDType SubmittingParty
{
get;
set;
}
[DataMember]
[XmlElement("PushMessageID")]
public string PushMessageID
{
get;
set;
}
}
在反序列化时,我使用XmlSerializer
:
FullServiceAddressCorrectionDelivery objAddressCorrectionDelivery =
new FullServiceAddressCorrectionDelivery();
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(this.richTextBox1.Text);
MemoryStream stream = new MemoryStream(byteArray);
XmlSerializer Xs = new XmlSerializer(typeof(FullServiceAddressCorrectionDelivery));
var result = (FullServiceAddressCorrectionDelivery)Xs.Deserialize(stream);
反序列化时出现问题:我的FullServiceAddressCorrectionDelivery
对象已成功反序列化,但其PushMessageID
属性中包含 null。我错过了什么?