【问题标题】:How to use XDocument to get attributes and add them to a List如何使用 XDocument 获取属性并将它们添加到列表
【发布时间】:2015-06-15 10:24:59
【问题描述】:

我正在尝试从 XML 文件加载数据并将其添加到列表中。 XML 文件如下所示:

这是我的代码:

    public void LoadPayments(List<List<string>> list1, List<List<string>> list2)
    {
        try
        {
            if (File.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RentData.xml")))
            {
                int count = 0;
                XDocument doc;
                using (var reader = XmlReader.Create(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RentData.xml")))
                {
                    doc = XDocument.Load(reader);
                    foreach (var dc in doc.Descendants("Rent"))
                    {
                        foreach (var dm in doc.Descendants("Month-" + count))
                        {
                            foreach (var dm1 in doc.Descendants("Payments"))
                            {
                               list1.Add(new List<string>() { dm.Attribute("Rent").Value, dm.Attribute("Water").Value, dm.Attribute("Electricity").Value, dm.Attribute("Internet").Value });
                               list2.Add(new List<string>() { dm.Attribute("Rent").Value, dm.Attribute("Water").Value, dm.Attribute("Electricity").Value, dm.Attribute("Internet").Value });
                            }
                        }
                        count++;
                    }
                    reader.Dispose();
                    reader.Close();
                }
            }
            else
            {
                File.Create(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RentData.xml"));
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }

我意识到目前代码非常混乱,但我一直在尝试各种方法来让它工作。如果有人可以帮助我弄清楚如何获取属性并将它们添加到两个不同的列表中,将不胜感激!谢谢!

【问题讨论】:

  • 如果需要任何额外信息,请告诉我,我会尽力提供! :D
  • 什么不起作用?您在最内层循环中使用 dm 而不是 dm1

标签: c# xml winforms list


【解决方案1】:

您尝试获取的属性不是Payments 元素的属性。你需要更深一层才能得到它们。试试这个方法:

......
doc = XDocument.Load(reader);
var data = doc.Root
              .Elements()
              .Elements("Payments");
foreach(var d in data)
{
    var patti = d.Element("Patti");
    list1.Add(new List<string>()
             { 
                patti.Attribute("Rent").Value, 
                patti.Attribute("Water").Value, 
                patti.Attribute("Electricity").Value, 
                patti.Attribute("Internet").Value 
             });

    var mike = d.Element("Mike");
    list2.Add(new List<string>() 
             { 
                mike.Attribute("Rent").Value, 
                mike.Attribute("Water").Value, 
                mike.Attribute("Electricity").Value, 
                mike.Attribute("Internet").Value 
             });
}
......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 2018-03-14
    • 2018-04-16
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多