код для заполнения списка со значениями из XML-файла - PullRequest
5 голосов
/ 03 мая 2011

Как заполнить комбинированный список значениями из XML-файла.

Ответы [ 3 ]

7 голосов
/ 03 мая 2011

Используя класс XmlDocument, вы можете циклически проходить по узлам XML-файла, а затем просто добавлять элементы в выпадающий список. Пример кода:

 XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("regis.xml"));
    XmlNodeList colorList = doc.SelectNodes("Information/Comments/Name");
    foreach (XmlNode Name in colorList)
    {
      DropDownList1.Items.Add(Name.InnerText);
    }

Ссылка: http://r4r.co.in/asp.net/01/tutorial/asp.net/How%20to%20populate%20combobox%20from%20xml%20file%20using%20c-Sharp%20in%20asp.net.shtml

4 голосов
/ 03 мая 2011

Вам нужно будет прочитать данные из файла, и вы можете использовать что-то вроде dataset.ReadXML (), а затем использовать это, чтобы установить привязку для вашего комбинированного списка.

Вот пример, с которого можно начать. http://www.codeproject.com/KB/cs/dropdownfromxml.aspx

Обновление: Обратите внимание, что существует два класса DataGrid. Тот, который имеет метод DataBind (), находится в пространстве имен System.Web.UI.WebControls. Элемент управления формы Windows не имеет метода DataBind и должен работать без этой строки. Смотри: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.datasource.aspx

2 голосов
/ 04 мая 2011

С учетом этого XML

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <node1 attribute1="attrib1" attribute2="attrib2">
        <node2>
            <node3>Item1</node3>
            <node3>Item2</node3>
            <node3>Item3</node3>
        </node2>
    </node1>
</root>

Мы можем получить данные несколькими способами.Этот класс имеет два метода, первый будет проходить по всем узлам, пока не получит нужные нам данные.Второй будет использовать метод XmlDocument.GetElementsByTagName (), чтобы перейти прямо к нужным нам данным.

using System;
using System.Xml;
using System.Collections.Generic;

public static class MyXmlParser
{
    ///This method will loop through each node to get to the data we want.
    public static List<string> GetItemsFromXmlByLoopingThroughEachNode(string Filename)
    {
        //Create a list to store all the items.
        List<string> Items = new List<string>();

        //Load the document from a file.
        XmlDocument doc = new XmlDocument();
        doc.Load(Filename);

        //Loop through all the nodes in the document.
        foreach(XmlNode RootNode in doc.ChildNodes)
        {
            if(RootNode.NodeType != XmlNodeType.XmlDeclaration)
            {//If the node is not the declaration node parse it.

                //Loop through all the child nodes of <root>
                foreach(XmlNode Node1Node in RootNode.ChildNodes)
                {
                    //Read Attributes of <node1>
                    XmlAttributeCollection attributes = Node1Node.Attributes;
                    XmlAttribute Attribute1 = attributes["attribute1"];
                    //Attribute1.Value will give you the string contained in the attribute.

                    //Loop through all child nodes of <node1>
                    foreach(XmlNode Node2Node in Node1Node.ChildNodes)
                    {
                        //Loop through all child nodes of <node2>
                        foreach(XmlNode Node3Node in Node2Node.ChildNodes)
                        {
                            //These nodes contain the data we want so lets add it to our List.
                            Items.Add(Node3Node.InnerText);
                        }
                    }
                }           
            }
        }
        //Return the List of items we found.
        return Items;
    }

    ///This method will use GetElementsByTagName to go right to the data we want.
    public static List<string> GetItemsFromXmlUsingTagNames(string Filename, string TagName)
    {
        //Create a list to store all the items.
        List<string> Items = new List<string>();

        //Load the document from a file.
        XmlDocument doc = new XmlDocument();
        doc.Load(Filename);

        //Get all the <node3> nodes.
        XmlNodeList Node3Nodes = doc.GetElementsByTagName(TagName);
        //Loop through the node list to get the data we want.
        foreach(XmlNode Node3Node in Node3Nodes)
        {
            //These nodes contain the data we want so lets add it to our List.
            Items.Add(Node3Node.InnerText);
        }
        //Return the List of items we found.
        return Items;       
    }
}

Когда у вас есть необходимые данные, вы можете добавить элементы в ComboBox

//Get the items from the XML file.
List<string> Items = MyXmlParser.GetItemsFromXmlUsingTagNames("C:\\test.xml","node3");
//Add them to the ComboBox
ComboBox1.Items.AddRange(Items.ToArray())

См.

XmlDocument

XmlNodeList

XmlNode

XmlAttributeCollection

XmlAttribute

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