2014-02-12 7 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); 
     } 

В результате в списке нет объекта. Как я могу десериализовать сериализованные объекты в xml в List? Может быть, что-то не так в коде для деринализации?

Редактировать: Что-то кажется неправильным в моем объявлении 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 Error (2,2). Может быть, структура xml не соответствует соглашениям? – LittleProgrammer

+0

Я использовал программу проверки, и я получаю сообщение: <Инструменты xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd = "http://www.w3.org/ 2001/XMLSchema "/> не объявлен? – LittleProgrammer

Смежные вопросы