2013-10-10 34 views
0

我正在嘗試反序列化XML以進行建模。 我有,例如:想要以特定方式反序列化XML以反對

<A> 
    <B id=1></B> 
    <B id=2></B> 
    <B id=3></B> 
</A> 

是否有可能搶B的ID的,而無需創建B型? 所以我想在結束了這樣的事情:

public class A { 
    [XmlAttribute(B/@id)] 
    public List<int> ids { get; set; } 
} 

THX。

回答

0

您可以實現ISerializable接口來添加自定義序列化/反序列化。

http://msdn.microsoft.com/en-us/library/ty01x675.aspx

[Serializable] 
public class MyObject : ISerializable 
{ 
    public int n1; 
    public int n2; 
    public String str; 

    public MyObject() 
    { 
    } 

    protected MyObject(SerializationInfo info, StreamingContext context) 
    { 
    n1 = info.GetInt32("i"); 
    n2 = info.GetInt32("j"); 
    str = info.GetString("k"); 
    } 
[SecurityPermissionAttribute(SecurityAction.Demand, 
SerializationFormatter =true)] 

public virtual void GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
    info.AddValue("i", n1); 
    info.AddValue("j", n2); 
    info.AddValue("k", str); 
    } 
} 
+0

THX。它會工作,我很確定,但對我的情況來說太複雜了。這是一個答案,但不幸的是,我無法得分,因爲我的代表低於15。:( – Kindzoku

+0

我最終決定你的決定。Thx!) – Kindzoku

+0

沒問題,希望你能繼續下去。我認爲在獲取對象數據中需要做的是獲取所有B節點,添加到列表中,然後調用info.AddValue(「B」,yourlist); – WraithNath