2013-12-16 118 views
-2

我使用这个:解析失败XML为

namespace FTPUploader 
{ 
    [XmlRoot("settings")] 
    public class Settings 
    { 
     [XmlElement("source")] 
     public Source[] Sources; 
    } 

    public class Source 
    { 
     [XmlElement("indetifier")] 
     public string Indetifier; 

     [XmlElement("directory")] 
     public string Directory; 

     [XmlElement("ftpsite")] 
     public string FTPSite; 

     [XmlElement("encrypt")] 
     public string ShouldEncrypt; 

     [XmlElement("zip")] 
     public string shouldZip; 

     [XmlArrayItem("specifier", typeof(Specifier))] 
     [XmlElement("inclusions")] 
     public Specifier[] Inclusions; 

     [XmlArrayItem("specifier", typeof(Specifier))] 
     [XmlElement("exclusions")] 
     public Specifier[] Exclusions; 

    } 


    public class Specifier 
    { 
     [XmlText] 
     public string Value; 
    } 
} 

解析这个XML:

<settings> 
    <source> 
    <indetifier>1040</indetifier> 
    <directory>C:\1040</directory> 
    <ftpsite>ftp://corecard.com/TEstRegion/</ftpsite> 
    <encrypt>yes</encrypt> 
    <zip>yes</zip> 
    <inclusions> 
     <specifier>*.txt</specifier> 
     <specifier>*.pdf</specifier> 
     <specifier>*.xls</specifier> 
    </inclusions> 
    <exclusions> 
    </exclusions> 
    </source> 
</settings> 

使用此:

  Settings settings; 
      using (FileStream reader = new FileStream("info.xml", FileMode.Open)) 
      { 
       XmlSerializer ser = new XmlSerializer(typeof(Settings)); 
       settings = ser.Deserialize(reader) as Settings; 
      } 

但它失败。请让我知道我错在哪里。

+2

'但fails.'它是如何失败?你有例外吗?如果是,那么错误信息是什么?或意外的结果?怎么样? –

回答

1

使用XmlArray属性,而不是XmlElement

[XmlArray("inclusions")] 
[XmlArrayItem("specifier", typeof(Specifier))] 
public Specifier[] Inclusions; 

[XmlArray("exclusions")] 
[XmlArrayItem("specifier", typeof(Specifier))] 
public Specifier[] Exclusions; 
+1

正确的目标! –