XElement - 无法捕获下一个节点

Posted

技术标签:

【中文标题】XElement - 无法捕获下一个节点【英文标题】:XElement - not able to capture the next node 【发布时间】: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”之外的所有属性。

【问题讨论】:

【参考方案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; 
    

【讨论】:

以上是关于XElement - 无法捕获下一个节点的主要内容,如果未能解决你的问题,请参考以下文章

在解析期间设置命名空间

给定 XElement - 按节点名称查找节点文本

如何在c#中使用xelement获取xml节点值

节点树和元素树--深度遍历

对 XElement 的子节点的索引访问

你根本不懂Javascript: HTML事件捕获与冒泡