【问题标题】:XMLRead all same NotesXML阅读所有相同的注释
【发布时间】:2020-07-22 19:21:33
【问题描述】:

您好,我有以下 xml 文件

<?xml version="1.0"?>
<Company>
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
     <Employee Name="Felix" Adress="Adress" age="22"\> 
</Company>

我想阅读它并将所有名称作为一个列表。所有地址也作为列表。所有年龄段也作为单独的列表。 我已经用 XDocument 进行了尝试,但我没有弄清楚它应该如何工作。 我永远不知道名单有多长。 如果我只是将整个字符串 " " 作为一个 Listobject ,那么我将只使用一个分隔符,但这不适合我。 我知道应该有一些东西可以从节点获取属性? 提前致谢 我想用 C# 构建它。 欢迎使用 Linq

【问题讨论】:

标签: c# xml


【解决方案1】:
  • 创建一个具有 Name、Address、Age 属性的 Employee 类
  • 创建一个包含员工列表的公司类
  • 将您的 xml 文档反序列化为公司
  • 从反序列化的公司访问员工列表及其属性

【讨论】:

    【解决方案2】:

    尝试以下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System.Xml.Linq;
    namespace ConsoleApplication1
    {
        class Program
        {
            const string FILENAME = @"c:\temp\test.xml";
            static void Main(string[] args)
            {
                XDocument doc = XDocument.Load(FILENAME);
                List<Employee> employee = doc.Descendants("Employee").Select(x => new Employee()
                {
                    name = (string)x.Attribute("Name"),
                    address = (string)x.Attribute("Adress"),
                    age = (int)x.Attribute("age")
                }).ToList();
    
                List<string> names = employee.Select(x => x.name).ToList();
                List<string> addresses = employee.Select(x => x.address).ToList();
                List<int> ages = employee.Select(x => x.age).ToList();
            }
        }
        public class Employee
        {
            public string name { get; set; }
            public string address { get; set; }
            public int age { get; set; }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      相关资源
      最近更新 更多