0

私はC#を初めて使用し、XMLファイルに1つの問題があります。私のコードは以下の通りです

 <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

上記の投稿されたソリューションは、null 参照例外をスローするため機能しません。以下のサンプル 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 に答える
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 に答える