添加XML值到下拉列表,c#

本文关键字:下拉列表 XML 添加 | 更新日期: 2023-09-27 18:02:18

我一直在使用下面的代码来将xml文件中的每个节点添加到下拉列表中,但到目前为止结果不正确。

 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和Cabin值填充一个下拉列表,这样用户就可以选择这些值来操作数据。我意识到在访问值时,我也在尝试不同的东西,从我看到的代码。

我得到的结果在我的下拉列表从这个代码是名字名字名字名字我添加了每个节点的第一个属性,但我需要做的是添加一个节点的每个值。注意:将要处理的xml文件将有不同的值和名称等,所以硬编码不是一个选项。

如果有人能帮忙的话,我很感激,谢谢。

添加XML值到下拉列表,c#

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));
}

这是您应该使用DataBinding来完成的事情。这篇博文有一个很好的例子,告诉你如何为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();
}

有关数据绑定的更多信息,您可以阅读以下内容:. NET、WinForms、WPF.

我不太确定您对下拉列表做了什么,但是您可以使用以下代码来获得您想要的单个值:

    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;
    }

您是说要在ddl中显示Garcia, Lenon, RusellWolf吗?如果是,只需更改:

Node["var"].Attributes["name"].InnerText;

Node["var"].Attributes["value"].Value;