【问题标题】:XElement - not able to capture the next nodeXElement - 无法捕获下一个节点
【发布时间】:2020-04-27 07:19:37
【问题描述】:

我有一个下面的 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】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多