XElement - 无法捕获下一个节点。

问题描述 投票:0回答:1

我有一个下面的xml文件。

        <?xml version='1.0'?>
                <Products>
                <Product>
                  <Product_id>1100</Product_id>
                  <Product_name>xyz</Product_name>                       
               </Product>
               <Product>
                  <Product_id>1101</Product_id>
                  <Product_name>abc</Product_name>                       
               </Product><Product>
                  <Product_id>1102</Product_id>
                  <Product_name>def</Product_name>                       
               </Product>
               </Products>

我试图获取每个属性的值,但我只得到了一个值,而不是所有的3个属性。 有什么建议可以纠正这个问题吗?

foreach (XElement xe in xdoc.Descendants().Elements("Product"))
            {

                obj.status = xe.Element("Product_id"). Value;
                obj.file_id = xe.Element("Product_name").Value;
                productlist.Add(obj);

            }

上面这个循环除了第一个产品 "xyz "之外,没有遍历所有的属性。

c# xml linq linq-to-xml
1个回答
1
投票

你需要为每个循环创建一个新对象。 现在你只保存最后一个项目

    class Program
    {
        static void Main(string[] args)
        {
            List<Object> productlist = new List<Object>();

            foreach (XElement xe in xdoc.Descendants().Elements("Product"))
            {
                Object obj = new Object();
                obj.status = xe.Element("Product_id").Value;
                obj.file_id = xe.Element("Product_name").Value;
                productlist.Add(obj);

            }
        }
    }
    public class Object
    {
        public string status { get; set; }
        public string file_id { get; set; }
    }
© www.soinside.com 2019 - 2024. All rights reserved.