C # XML загрузка базы данных - PullRequest
0 голосов
/ 04 ноября 2018

Я создаю программу менеджера дизайна. Программа запускается из базы данных XML . Я загружаю данные в древовидную структуру, где затем могу отображать подробные данные в виде списка.

Что у меня есть:

XDocument xdoc = XDocument.Load("XML Template.xml");

            var CustomerList = from q in xdoc.Descendants("Customer")
                         select new
                         {
                             Customer = q.Element("Name").Value
                         };
            //add all the customers as top nodes to the treeview
            foreach (var assemblyList in CustomerList)
            {
                // get all the assembly numbers under that customer name.
                // add node to the tree view under the customer node.
                foreach (var partlist in assemblyList)
                {
                    // get all of the parts under that assembly number
                    // Add parts to the tree view under the aseembly node.
                    foreach (var file in partlist)
                    {
                        //add the data to another view
                    }
                }
            }

Кажется, я не могу найти хороший способ кодирования такой структуры с помощью LINQ или System.xml.

1 Ответ

0 голосов
/ 05 ноября 2018

Я нашел решение этой проблемы с помощью вложенных циклов. Может быть, не красиво, но это работает!

private void MainForm_Load(object sender, EventArgs e)
    {
        int cusLooper = 0;
        int assyLooper = -1;


        //Load xml
        XmlDocument db = new XmlDocument();
        db.Load("XML Template.xml");
        XmlNodeList nl = db.GetElementsByTagName("Customer");

        foreach (XmlNode node in nl)
        {
            XmlNode element = node;
            foreach(XmlNode node2 in node)
            {
                XmlNode node3 = node2;
                if (node2.Name == "Name")
                {
                    treeView1.Nodes.Add(node3.InnerText);
                    assyLooper = -1;
                }
                foreach (XmlNode node4 in node3)
                {
                    if (node4.Name == "AssemblyNumber")
                    {
                        treeView1.Nodes[cusLooper].Nodes.Add(node4.InnerText);
                        assyLooper++;
                    }
                    if (node4.Name == "Part")
                    {
                        XmlNode element2 = node4;
                        foreach (XmlNode final in element2)
                        {
                            if (final.Name == "PartNumber")
                            {
                                TreeNode nd = treeView1.Nodes[cusLooper].Nodes[assyLooper].Nodes.Add(final.InnerText);
                                nd.ImageIndex = 7;
                                nd.SelectedImageIndex = nd.ImageIndex;
                            }

                        }
                        //assyLooper++;
                    }

                }

            }
            cusLooper++;
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...