2014-02-12 227 views
0

的应用序列化列表为xml:反序列化XML在列表

<?xml version="1.0"?> 
    <Tools xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Tool> 
    <Name>test1</Name> 
     <Path>C:\Program Files\FreePDF_XP\fpmailer.exe</Path> 
    </Tool> 
    <Tool> 
    <Name>test2</Name> 
    <Path>C:\Program Files\FreePDF_XP\fpassist.exe</Path> 
    </Tool> 
    <Tool> 
    <Name>test3</Name> 
    <Path>C:\Program Files\FreePDF_XP\ShellMail.exe</Path> 
    </Tool> 
    </Tools> 

如果我不上走错了路,我必须创建新的对象,并将其添加到列表:

Tool tool = new Tool(); 
XmlSerializer deserializer = new XmlSerializer(typeof(List<Tool>)); 
using (var reader = new StreamReader(@Start.userConfigurePath + "\\config.xml")) 
      { 
       tool = (Tool)deserializer.Deserialize(reader); 
       reader.Close(); 
      } 
      toolList.Add(tool); 
     } 

在结果中列表中没有对象。我如何反序列化List中xml中的序列化对象?这可能是代码上出现了什么错误?

编辑: 我的XML声明(XML文件错误2,2)似乎是错误的。我不理解,因为我在这条路上创建XML文档:

XmlDocument toolConfig = new XmlDocument(); 
     XmlNode myRoot; 
     myRoot = toolConfig.CreateElement("Tool"); 
     toolConfig.AppendChild(myRoot); 

回答

2

应该

toolList = (List<Tool>)deserializer.Deserialize(reader); 
+0

我得到的XML错误(2,2)。难道是XML的结构不符合惯例? – LittleProgrammer

+0

我使用了一个验证程序,我收到消息:没有声明? – LittleProgrammer