2014-02-12 127 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