使用xml文件中的值填充组合框的代码

时间:2011-05-03 04:58:24

标签: c# xml combobox

如何使用xml文件中的值填充组合框。

3 个答案:

答案 0 :(得分:7)

使用XmlDocument类,您可以循环访问xml文件的节点,然后继续添加项目到dropdownlist。 示例代码:

 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

答案 1 :(得分:4)

您必须从文件中读取数据,然后使用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 :(得分:2)

鉴于此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