C# 将XML值添加到dropdownlist,c
我一直在处理以下代码,将xml文件中的每个节点添加到下拉列表中,但到目前为止结果不正确C# 将XML值添加到dropdownlist,c,c#,asp.net,xml,drop-down-menu,C#,Asp.net,Xml,Drop Down Menu,我一直在处理以下代码,将xml文件中的每个节点添加到下拉列表中,但到目前为止结果不正确 XmlDocument XmlDoc = new XmlDocument(); XmlDoc.Load(Server.MapPath("~/Upload/" + FileUpload1.FileName)); XmlNodeList question = XmlDoc.GetElementsByTagName("row"); foreach(XmlNode Node in question) {
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath("~/Upload/" + FileUpload1.FileName));
XmlNodeList question = XmlDoc.GetElementsByTagName("row");
foreach(XmlNode Node in question)
{
string answer = Node["var"].Attributes["name"].InnerText;
string ques = Node["var"].InnerText;
DropDownList1.Items.Add(new ListItem(answer, ques));
}
这是我的xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<row>
<var name="Name" value="Garcia" />
<var name=" Surname" value=" Jose" />
<var name=" Country" value=" Cuba" />
<var name=" Job" value="Software Developer" />
<var name=" Cabin" value="345A" />
</row>
<row>
<var name="Name" value="Lenon" />
<var name=" Surname" value="Tim" />
<var name=" Country" value="USA" />
<var name=" Job" value="SoftwareDeveloper" />
<var name=" Cabin" value="444" />
</row>
<row>
<var name="Name" value="Rusell" />
<var name=" Surname" value=" Anthony" />
<var name=" Country" value=" UK" />
<var name=" Job" value="Web Designer" />
<var name=" Cabin" value="345" />
</row>
<row>
<var name="Name" value="Wolf" />
<var name=" Surname" value=" Werner" />
<var name=" Country" value=" Germany" />
<var name=" Job" value="Linux IT" />
<var name=" Cabin" value="234 " />
</row>
</root>
我需要做的只是用值Name、姓氏、Country、Job和cab填充一个下拉列表,这样用户就可以选择这些值来处理数据。我意识到,使用应答标签,我正在访问这些值,我也在尝试与我看到的代码不同的东西
我从这段代码的下拉列表中得到的结果是
名称
名称
名称
名称
我正在添加每个节点的第一个属性,但我需要做的是只添加一个节点的每个值。注意:我将使用的xml文件将具有不同的值和名称等,因此硬编码不是一个选项
如果有人能帮忙,我将不胜感激。这是你应该用来完成的事情。有一个很好的例子说明了如何在ASP.NET中执行此操作,它也适用于WinForms。关键功能是:
//populates the dropdownlist from xml file
public void PopulateDDLsFromXMLFile()
{
DataSet ds = new DataSet();
ds.ReadXml(MapPath("~/Resources/XMLFile.xml"));
//now define datatext field and datavalue field of dropdownlist
ddlName.DataTextField = "Name";
ddlName.DataValueField = "Name";
...
//now bind the dropdownlist to the dataview
ddlName.DataSource = ds;
ddlName.DataBind();
}
有关数据绑定的更多信息,请阅读以下内容:,。您是说要在ddl中显示Garcia、Lenon、Rusell和Wolf吗?如果是,只需更改您的:
Node["var"].Attributes["name"].InnerText;
到
我不太清楚您正在使用下拉列表做什么,但您可以使用以下代码来获得所需的各个值:
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath("~/Upload/" + FileUpload1.FileName));
string searchpath = "//root//row";
XmlNodeList xmlnodes = XmlDoc.SelectNodes(searchpath);
foreach (XmlNode node in xmlnodes)
{
string name = node.SelectSingleNode("//var[@name='Name']").Attributes["value"].InnerXml;
string surname = node.SelectSingleNode("//var[@name=' Surname']").Attributes["value"].InnerXml;
string Country = node.SelectSingleNode("//var[@name=' Country']").Attributes["value"].InnerXml;
string Job = node.SelectSingleNode("//var[@name=' Job']").Attributes["value"].InnerXml;
string Cabin = node.SelectSingleNode("//var[@name=' Cabin']").Attributes["value"].InnerXml;
}
我不会使用数据集来做这件事。@Tocco-如果是这样,你应该提供一个替代解决方案。不,我想添加名称、姓氏等。发生的事情是我只从每个节点提取名称,即4 timestring answer=node[var]。Attributes[value]。value;字符串ques=Node[var].InnerText;DropDownList1.Items.Addnew ListItemanswer,ques;XmlNode CurNode=Node[var];CurNode.NextSibling时!=null{DropDownList1.Items.Addnew ListItemCurNode.NextSibling.Attributes[value].value,CurNode.NextSibling.InnerText;CurNode=CurNode.NextSibling;}我不知道如何使它看起来更好。基本思想是,您需要将节点移动到nextsibling并获取值。但是我认为XML格式不好。如果你能改变它。代码会更好。为什么要使用FileUpload1.FileName定义文件源?文件中的节点[var].InnerText在哪里?如何处理“value”属性的值?狼,沃纳,德国。。。
XDocument xml = XDocument.Load(Server.MapPath("~/Upload/" + FileUpload1.FileName));
foreach (var el in xml.Document.Descendants().First().Descendants().First().Descendants())
{
DropDownList1.Items.Add(new ListItem(el.Attribute(XName.Get("name")).Value, Value = el.Value));
}
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath("~/Upload/" + FileUpload1.FileName));
string searchpath = "//root//row";
XmlNodeList xmlnodes = XmlDoc.SelectNodes(searchpath);
foreach (XmlNode node in xmlnodes)
{
string name = node.SelectSingleNode("//var[@name='Name']").Attributes["value"].InnerXml;
string surname = node.SelectSingleNode("//var[@name=' Surname']").Attributes["value"].InnerXml;
string Country = node.SelectSingleNode("//var[@name=' Country']").Attributes["value"].InnerXml;
string Job = node.SelectSingleNode("//var[@name=' Job']").Attributes["value"].InnerXml;
string Cabin = node.SelectSingleNode("//var[@name=' Cabin']").Attributes["value"].InnerXml;
}