1

私は確かにここで学んでおり、xml のシリアル化と逆シリアル化を進めてきました。

URI私が持っている質問は、以下の XMLでどのようにアクセスするのですか?

<address href="/api/juniper/sd/address-management/addresses/98677" 
uri="/api/juniper/sd/address-management/addresses/98677">
  <name>Any-IPv4</name> 
  <address-type>ANY_IPV4</address-type>  
  <description>Predefined any-ipv4 address</description> 
  <host-name /> 
  <id>98677</id>  
</address>

クラスでそれを設定して逆シリアル化する方法が本当にわかりませんか?

私のクラスは現在次のようになっています。

[XmlRoot("address", Namespace = "")]
public class address
{
    string _name;
    string _editVersion;
    string _addressType;
    string _ipAddress;
    string _description;
    string _hostName;
    string _zone;
    string _addressVersion;
    string _definitionType;
    string _createdByUserName;
    string _lastModifiedByUser;
    string _createdTime;
    string _lastModifiedTime;
    string _id;

    [XmlElement(ElementName = "name")]
    public string name
    {
        get { return _name; }
        set { _name = value; }
    }
    [XmlElement(ElementName = "edit-version")]
    public string editversion
    {
        get { return _editVersion; }
        set { _editVersion = value; }
    }
    [XmlElement(ElementName = "address-type")]
    public string addresstype
    {
        get { return _addressType; }
        set { _addressType = value; }
    }
    [XmlElement(ElementName = "ip-address")]
    public string ipaddress
    {
        get { return _ipAddress; }
        set { _ipAddress = value; }
    }
    [XmlElement(ElementName = "description")]
    public string description
    {
        get { return _description; }
        set { _description = value; }
    }
    [XmlElement(ElementName = "host-name")]
    public string hostname
    {
        get { return _hostName; }
        set { _hostName = value; }
    }
}

前もって感謝します!

4

1 に答える 1

2

属性を使用XmlAttributeAttribute*

[XmlAttribute]
public string uri
{
    get { return _uri; }
    set { _uri = value; }
}

としてシリアル化する場合はSystem.Uri、シリアル化できないため、別のプロパティで行う必要がありますUri

[XmlAttribute("uri")]
public string SerializedUri
{ 
    get
    {
        return uri.ToString();
    }
    set
    {
        uri = new Uri(value, UriKind.RelativeOrAbsolute);
    }
}

[XmlIgnore]
public Uri uri { get; set; }

この使用法では、コード内でプロパティに対して直接読み取り/書き込みを行い、Uri uriプロパティを無視しSerializedUriます。シリアライザを通過すると、そのプロパティは無視され、代わりに が使用SerializedPropertyされ、プロパティが手動でシリアライズ/デシリアライズされUri uriます。

* (3 倍速く言う)

于 2013-07-15T21:29:37.220 に答える