XElement - не может захватить следующий узел - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть файл ниже 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 из них. Любые указатели о том, как исправить this?

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

            }

Это выше l oop не проходит через все атрибуты, кроме первого продукта "xyz".

1 Ответ

1 голос
/ 27 апреля 2020

Вам необходимо создать новый объект для каждого l oop. Сейчас вы сохраняете только последний элемент

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