List<string>. Как сохранить/прочитать в XML?

178
10 марта 2019, 14:10

Создаю дерево

// Заполнение дерева узлами
        public void createRootNode()
        {
            // Create the root node.
            // Создаем корневой узел.
            TreeNode Node_1 = new TreeNode("Node_1");
            // Add some additional nodes.
            // Добавьте некоторые дополнительные узлы.
            Node_1.Nodes.Add("Node_1_1");
            Node_1.Nodes.Add("Node_1_2");
            // Add the root nodes to the TreeView.
            // Добавьте корневые узлы в TreeView.
            treeView1.Nodes.Add(Node_1);
            // Create the root node.
            // Создаем корневой узел.
            TreeNode Node_2 = new TreeNode("Node_2");
            // Add some additional nodes.
            // Добавьте некоторые дополнительные узлы.
            Node_2.Nodes.Add("Node_2_1");
            Node_2.Nodes.Add("Node_2_1");
            // Add the root nodes to the TreeView.
            // Добавьте корневые узлы в TreeView.
            treeView1.Nodes.Add(Node_2);
        }

Пробую сохранить/прочитать в XML следующим способом.
Класс CreateList.cs

public class CreateList
    {
        public List<string> createListBuild()
        {
            var itemsList = new List<string> { "item1", "item2", "item3" };
            return itemsList;
        }
    }

Класс ConfigWrapper.cs

[XmlRoot(Namespace = "", ElementName = "collection")]
    public class ConfigWrapper
    {
        [XmlElement("item")]
        public List<string> Items { get; set; }
    }

Класс WriteReadList.cs

public class WriteReadList
    {
        // Запись в XML
        public void WriteXML(List<string> itemsList)
        {   
            var cfgIn = new ConfigWrapper { Items = itemsList };
            var xs = new XmlSerializer(typeof(ConfigWrapper));
            //string fileContent = "ListXML";
            // string fileContent = @".\ListXML.xml";
            string fileContent = @".\ListXML.xml";
            using (var sw = new StringWriter())
            {
                xs.Serialize(sw, cfgIn);
                fileContent = sw.ToString();
                // Console.WriteLine(fileContent);
            }
        }
        public void ReadXML(string fileContent)
        {
            ConfigWrapper cfgOut = null;
            using (var sr = new StringReader(fileContent))
            {
                var xs = new XmlSerializer(typeof(ConfigWrapper));
                cfgOut = xs.Deserialize(sr) as ConfigWrapper;
                // cfgOut.Dump(); //view in LinqPad
                // if (cfgOut != null)
                    // yields 'item2'
                    // Console.WriteLine(cfgOut.Items[1]);
            }
        }
    }

Логику реализую следующими кнопками:

List<string> listWork;
  CreateList createList;
private void button1_Click(object sender, EventArgs e)
        {
            listWork = createList.createListBuild();
        }
// Сохранить в XML
        private void button3_Click(object sender, EventArgs e)
        {
            // Конфигурация обёртки
            ConfigWrapper config = new ConfigWrapper();
            config.Items = listWork;
            WriteReadList writeReadList = new WriteReadList();
            writeReadList.WriteXML(config.Items);
        }

У меня не получается сделать чтобы код работал

Как сделать правильно?
Как сделать чтобы List сохранялся/читался из XML файла, который расположен рядом с "*.exe" файлом проекта?
Или как это сделать более проще?

READ ALSO
Уникальные поля EF Core 2.1

Уникальные поля EF Core 2.1

Есть база данных с двумя таблицами: Users и FollowersДля доступам к данным используется EF Core 2

168
Visual Studio 2017 не работает режим отладки

Visual Studio 2017 не работает режим отладки

Проблема в следующемПри запуске проекта через

226
ajax и элементы с одинаковым классом

ajax и элементы с одинаковым классом

Есть несколько блоков с одинаковым классом, по тыку срабатывает функция, которая сравнивает текст блока с полем из таблицы в бд, и после выборки...

168
Всплывающее уведомление

Всплывающее уведомление

У меня есть кнопка, на которой вести функция: <div class="btn btn-v-1" style="margin-top:30px" type="text" onclick='SaveCountry();'>Upload</div> Как сделать, чтоб если функция отработала...

125