0

我是 C# 新手,我对 XML 文件有一个问题。我的代码如下

 <root>
<product category="Soaps">
    <product type="Washing"></product>
    <product type="Bathing"></product>
</product>
<product category="ThoothPaste">
    <product type="ThoothPaste"></product>
</product>
<product category="Biscuits">
  <product type="Parle"></product>
  <product type="Marrie"></product>
  <product type="Britania"></product>
</product>
   </root>   

我希望在加载表单时,应将产品类型属性插入到我的组合框中。我尝试了打击代码,但没有得到预期的结果。

任何人都可以提供解决方案吗?

  private void Admin_Load(object sender, EventArgs e)
    {

       DataSet ds = new DataSet();
       ds.ReadXml(strpath + "Products.xml");
       dgvProducts.DataSource = ds.Tables[0];



       xdoc.Load(strpath + "list.xml");
      // MessageBox.Show("Test231");
       XmlNodeList nodeList = xdoc.SelectNodes("//product");
      // MessageBox.Show("Test");
       foreach (XmlNodeList node in nodeList)
       {
           cmbBox.Items.Add(node.innerText)
       }


    }
4

2 回答 2

0

使用LINQ2XML ..它非常简单,可以完全替代其他 XML API

XElement doc=XElement.Load(strpath + "Products.xml");

foreach (string type in doc.Descendants("product").Select(x=>x.Attribute("type").Value).ToList<string>())
       {
           cmbBox.Items.Add(type)
       }
于 2012-10-06T08:01:09.287 回答
0

上面发布的解决方案不起作用,因为它会抛出空引用异常,使用下面的示例 Linq-xml 代码

XElement xElement = XElement.Load(@"XMLFile1.xml");

            var producttypes = from ptypes in
                                   xElement.Descendants("product")
                               let xAttribute = ptypes.Attribute("type")
                               where xAttribute != null
                               select xAttribute.Value;

            comboBox1.Items.Clear();
            foreach (var ptypes in producttypes)
            {
            comboBox1.Items.Add(ptypes);
            }
于 2012-10-06T11:33:49.577 回答