以下是到目前为止我为处理由第三方dll返回的xmldocument所采取的步骤。
我将xmldocument保存为segmentationsummary.xml。
我使用xsd.exe创建segmentationsummary.xsd。
我使用xsd.exe创建segmentationsummary.cs。
这是segmationsummary.cs的示例。注意shmresult是根节点表示。

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "omitted")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "omitted", IsNullable = false)]
public partial class ShmResult
{
    private ShmResultDownloadDetail[] downloadDetailField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("DownloadDetail")]
    public ShmResultDownloadDetail[] DownloadDetail
    {
        get
        {
            return this.downloadDetailField;
        }
        set
        {
            this.downloadDetailField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "omitted")]
public partial class ShmResultDownloadDetail
{
    private string modelCodeField;

    /// <remarks/>
    public string ModelCode
    {
        get
        {
            return this.modelCodeField;
        }
        set
        {
            this.modelCodeField = value;
        }
    }
}

现在,我想用它来阅读xmldocument并开始使用segmentationsummary.cs中的类。这是我写的代码:
private XmlDocument _document;
SegmentationSummary.ShmResult _Result;
    private void LoadXML()
    {
        XmlReader xmlRdr = new XmlNodeReader(_document);
        System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(SegmentationSummary.ShmResult));
        _Result = (SegmentationSummary.ShmResult)s.Deserialize(xmlRdr);
    }

当loadXML()被执行时,我会得到这种类型的异常:
试验方法
分段摘要handlertest.testmethod1
引发异常:
System.InvalidOperationException:无效操作异常:
无法生成临时类
(结果=1)。错误CS0030:无法
转换类型
'merc.aircat.shmcoreinterface.segmentationsummary.shmresultdownloaddail[]

'merc.aircat.shmcoreinterface.segmentationsummary.shmresultdownloaddail'信息'
错误CS0029:无法隐式
转换类型
'merc.aircat.shmcoreinterface.segmentationsummary.shmresultdownloaddail'信息'

'merc.aircat.shmcoreinterface.segmentationsummary.shmresultdownloaddail[]
现在,http://msdn.microsoft.com/en-us/library/ms950721.aspx上的常见问题说明如下:
问:如何序列化
物体?
A:XmlSerializer抛出
当集合包含
未声明给
XmlSerializer的构造函数。你
罐头:
通过向序列化程序传递带有

收集。

实现从派生的强类型集合
System.Collections.CollectionBase与
与add()方法匹配的索引器。
我的问题是:哪一个是“最好的”,我该如何实施解决方案?

最佳答案

我遇到了类似的问题。
序列化嵌套的未绑定元素时出现问题。Here is an explanation.
为了解决这个问题,我从xsd中删除了maxOccurs=“unbounded”,并重新生成了类文件。在那之后,序列化工作了。

10-08 20:10