【发布时间】:2011-05-04 04:31:04
【问题描述】:
如何使用 xml 文件中的值填充组合框。
【问题讨论】:
如何使用 xml 文件中的值填充组合框。
【问题讨论】:
使用 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);
}
【讨论】:
你必须从文件中读取数据,你可以使用 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
【讨论】:
鉴于此 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;
}
}
获得所需数据后,您可以将项目添加到组合框
//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())
见
【讨论】: