Reading XML into List<>



第一次使用XML和其中的许多实践,但是,我正在完成它。我有一个简单的XML文件,一个Item类和一个列表。我想读取 XML 文件并将其输出到 和 项,并将该项添加到列表中。

我已经弄清楚了如何制作 XML,阅读它并模糊地将其解析为 Item var,但我无法包装或弄清楚如何转换它以将抓取的 XML 元素添加到我的列表中。 任何帮助将不胜感激。

代码 XML:'

<?xml version="1.0" encoding="utf-8" ?>
<ITEMS>
  <ITEM>
    <ITEMNAME>Apple</ITEMNAME>
    <ITEMPRICE>2.50</ITEMPRICE>
  </ITEM>
  <ITEM>
    <ITEMNAME>Dark Chocolate</ITEMNAME>
    <ITEMPRICE>1.25</ITEMPRICE>
  </ITEM>
</ITEMS>`

项目:

    internal class Item
{
    private string _itemName;
    private decimal _itemPrice;
    public Item(string itemName, decimal itemPrice)
    {
        _itemName = itemName;
        _itemPrice = itemPrice;
    }
    public Item()
    {
    }
    public string ItemName
    {
        get => _itemName;
        set => _itemName = value;
    }
    public decimal ItemPrice
    {
       get { return _itemPrice;}
        set { _itemPrice = value; }
    }
    public override string ToString()
    {
        // String representation.
        return this._itemName + " " + this._itemPrice.ToString("C");
    }
}

方法:

    public static void CreateItemsList(List<Item> itemsList)
{
    var doc = XDocument.Load(@"....ItemsXML.xml");
    var item = doc.Root
        .Descendants("ITEM")
        .Select(node => new Item
        {
            ItemName = node.Element("ITEMNAME").Value,
            ItemPrice = decimal.Parse(node.Element("ITEMPRICE").Value)
        })
        .ToList();
    Console.WriteLine(item.ToString());
}

您可以将 ref 用于项目列表参数。

public static void CreateItemsList(ref List<Item> itemsList)
        {
            var doc = XDocument.Load(@"....ItemsXML.xml");
            itemsList = doc.Root
                .Descendants("ITEM")
                .Select(node => new Item
                {
                    ItemName = node.Element("ITEMNAME").Value,
                    ItemPrice = decimal.Parse(node.Element("ITEMPRICE").Value)
                })
                .ToList();
            Console.WriteLine(string.Join(",", itemsList.Select(x => x.ToString())));
        }

使用时

    List<Item> itemsList = new List<Item>();
    CreateItemsList(ref itemsList);

我希望它能帮助你。

代码有效,只是 ToString(( 没有。 做了一些小的改进:

       public static void CreateItemsList(List<Item> itemsList)
        {
            var doc = XDocument.Load(FILENAME);
            var item = doc.Root
                .Descendants("ITEM")
                .Select(node => new Item()
                {
                    ItemName = (string)node.Element("ITEMNAME"),
                    ItemPrice = (decimal)node.Element("ITEMPRICE")
                })
                .ToList();
            Console.WriteLine(string.Join(",",item.Select(x => x.ToString())));
        }
foreach (var oneItem in item)
    Console.WriteLine(oneItem.ToString());

var item = ...(node => new item ... ).ToList()此代码放在Item List<item>中。因此,要调用每个人的ToString,您必须浏览列表。

因此,请考虑将他的名字更改为">项目 s"。

最新更新