2013-10-10 33 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