2012-07-09 30 views
0

使用的System.Xml.Serialization我想读如下结构的XML文件:我需要负载从一个XML文件中加载项的数组,但顶层不读列出的项目

<?xml version="1.0" encoding="utf-8"?> 
<rootname xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <AListItem> 
    <someDataItem>1</someDataItem> 
    <anotherItem>2</anotherItem> 
    </AListItem> 
    <AListItem> 
    <someDataItem>3</someDataItem> 
    <anotherItem>4</anotherItem> 
    </AListItem> 
    <Name>a string</Name> 
</rootname> 

我的阶级结构:

public class rootname 
{ 
    public rootname() { } 

    [XmlElement("AListItem")] 
    List<AListItem> DataList { get; set; } 

    public string Name { get; set; } 
} 

public class AListItem 
{ 
    public AListItem() {} 

    public string someDataItem { get; set; } 
    public string anotherItem { get; set; } 
} 

反序列化:

using (System.IO.FileStream stream = new FileStream(openFile.FileName, FileMode.Open, FileAccess.Read)) 
{ 
    System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(rootname)); 
    rootname deserializedObject = xml.Deserialize(stream) as rootname; 
} 

'名称' 属性被加载,但在DataList是 空值。应该如何加载AListItem项目? XmlElement属性是否正确?

+0

你在哪里添加AListItem对象到列表中?也许你应该给我们更多的代码,你如何阅读XML文件? – Thousand 2012-07-09 10:49:18

+0

您需要一个收集节点,例如AListItems。 – 2012-07-09 10:53:27

+0

@托尼霍普金森改变Xml文件结构不是我的选择。 (给出的例子只是一个结构的例子,实际的文件比较复杂,并且是由第三方设备组成的。) – James 2012-07-09 10:57:57

回答

0

谢谢托尼我刚刚意识到这个问题。我忘了公布名单!

public class rootname 
{ 
    public rootname() { } 

    [XmlElement("AListItem")] 
    public List<AListItem> DataList { get; set; } // <<< public! 

    public string Name { get; set; } 
} 

Ohps。

+1

我想说我从未发生过类似的事情,但我会说一点点。 – 2012-07-09 12:58:54

相关问题