首次使用XML以及其中的许多实践,但是,我正在通过它。我有一个简单的XML文件,一个Item类和一个List。我想读取XML文件并将其输出到Item,并将该Item添加到List。
我已经弄清楚如何制作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());
}
答案 0 :(得分:0)
foreach (var oneItem in item)
Console.WriteLine(oneItem.ToString());
var item = ...(node => new item ... ).ToList()
此代码位于Item
个List<item>
。因此,要调用每个人的ToString
,您必须浏览列表。
出于这个原因,请考虑将其姓名更改为&#34;项 s &#34;。
答案 1 :(得分:0)
代码正常,只是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())));
}
答案 2 :(得分:0)
您可以将ref用于itemsList参数。
List<Item> itemsList = new List<Item>();
CreateItemsList(ref itemsList);
使用时
$
我希望它会对你有所帮助。