第一次使用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"。