2013-02-26 71 views
0

我有一个类用于通过XMLSerializer序列化和反序列化。 ExportSteps是另一个实现用于自定义序列化的IXmlSerializer的类。XMLSerializer没有读取所有元素

我的问题是它读取exportSteps后不读取和设置任何属性。如果我将IsNew和Test2移动到上面的步骤,它工作正常。我不认为这是一个有效的解决方案,但是如果我需要两个自定义的序列化类呢?

public class PublishOptions 
{ 


    [XmlElement("test")] 
    public bool Test { get; set; } 

    [XmlElement("exportSteps")] 
    public ExportSteps Steps { get; set; } <-- implements IXmlSerializable 

    [XmlElement("isNew")] 
    public bool IsNew { get; set; } 

    [XmlElement("test2")] 
    public bool Test2{ get; set; }} 
} 

var test = serializer.Deserialize(stream) as PublishOptions; 

XML(实施例):

<publishingOptions> 
    <test>true</test> 
    <exportSteps>  
    <option>foo</option> 
    <option>bar</option> 
    </exportSteps> 
    <isNew>true</isNew> 
    <test2>true</test2> 
</publishingOptions> 
+0

什么是XML结构看起来像沙阿也代替流你有没有想过使用XMLReader – MethodMan 2013-02-26 17:48:26

+0

编辑与示例XML。请注意,这是一个简化版本。 – Shah 2013-02-26 19:10:47

+0

在你的示例中,你说这个元素被命名为'exportOptions',并且在你的代码中你标明了'exportSteps'这是一个错字?它们应该匹配名称,否则在尝试反序列化时可能导致内部错误。 – 2013-02-26 19:33:01

回答

0

我发现了错误,它是在ReadXml方法。读者正在元素中间退出自定义阅读器。这导致在自定义序列化器失败后引发任何事情。

相关问题