1

私は次のような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>

クラスでノードをマップするために、次のようなクラス構造を持っています

 [Serializable]
public class FullServiceAddressCorrectionDelivery
{
    [XmlElement("AuthenticationInfo")]
    public AuthenticationInfo AuthenticationInfo
    {
        get;
        set;
    }

}

[Serializable]
public class AuthenticationInfo 
{
    [XmlElement("UserId")]
    public string UserId
    {
        get;
        set;

    }
    [XmlElement("UserPassword")]
    public string UserPassword
    {
        get;
        set;

    }

}

De-serialization の場合、xmlserializer を使用してオブジェクトを逆シリアル化しました

        byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(xmlString);
        MemoryStream stream = new MemoryStream(byteArray);
        XmlSerializer xs = new XmlSerializer(typeof(FullServiceAddressCorrectionDelivery));
        var result = (FullServiceAddressCorrectionDelivery)xs.Deserialize(stream);

しかし、FullServiceAddressCorrectionDeliveryオブジェクトの値は常にnullです..私がここで間違っていることを助けてください....

4

1 に答える 1

0

ここで説明されているように、XmlElement 属性にネームスペースを追加します。

    [Serializable]
    public class FullServiceAddressCorrectionDelivery
    {
        [XmlElement("AuthenticationInfo", 
              Namespace = 
              "http://www.usps.com/postalone/services/UserAuthenticationSchema")]
        public AuthenticationInfo AuthenticationInfo
        {
            get;
            set;
        }
    }

    [Serializable]
    public class AuthenticationInfo
    {
        [XmlElement("UserId", Namespace="")]
        public string UserId
        {
            get;
            set;
        }
        [XmlElement("UserPassword", Namespace = "")]
        public string UserPassword
        {
            get;
            set;
        }
    } 
于 2012-06-03T12:10:50.327 に答える