将xml中定义的简单对象列表加载为c#中的对象
本文关键字:加载 对象 列表 简单 xml 定义 单对象 | 更新日期: 2023-09-27 18:17:14
我是一名选修HCI设计课程的大学生,第一次使用c#和WPF。我读了一些关于xml的内容,它似乎是获取输入以用于我的程序的好方法。我创建了一个XML文件,其中包含房屋列表和参数,如下所示:
<house>
<Price>400000</price>
<neighborhood>BrentWood</neighborhood>
<description>This is a so and so house, located...</description>
</house>
<house>
<Price>300000</price>
<neighborhood>BrentWood</neighborhood>
<description>This is a so and so house, located...</description>
</house>
我有一个家庭班,像这样:
public class house{
public house(int price, string neighborhood, string description){
this.price = price;
this.neighborhood = neighborhood;
this.description = description;
}
public int price;
public string neighborhood;
public string description;
}
我读了一点关于xml,但我似乎找不到一个教程,使一个函数,以xml文件作为输入,并返回新创建的房屋对象的列表。谁能告诉我这是怎么做的?或者建议在文件中定义房屋对象并将其加载为房屋对象的更好方法?
这应该可以让你开始使用LINQ to XML:
XDocument housesXml = XDocument.Load("houses.xml");
List<House> houses =
housesXml.Root.Elements("house")
.Select(h => new House(
int.Parse(h.Element("price").Value),
(string) h.Element("neighborhood"),
(string) h.Element("description")
))
.ToList();
(另外,将<house>
元素包装在外部<houses></houses>
根标记中,并注意匹配大小写,<Price></price>
应该是<price></price>
)
查看这些链接,帮助您在c#中阅读XML文件,并更好地指导您以哪种方式快速阅读:
如何使用Visual c#从文件中读取XML以最简单的方式在c#中使用XML
快速读取xml
首先使用XmlTextReader类打开文件。
XmlTextReader reader = new XmlTextReader ("books.xml");
创建XmlTextReader对象后,使用Read
方法读取XML数据。Read方法继续按顺序在XML文件中移动,直到到达文件的末尾,此时Read方法返回值"False"。"
要处理XML数据,每个记录都有一个节点类型,可以从NodeType
属性确定。
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name);
Console.WriteLine(">");
break;
case XmlNodeType.Text: //Display the text in each element.
Console.WriteLine (reader.Value);
break;
case XmlNodeType. EndElement: //Display the end of the element.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
break;
}
}
在Console.WriteLine
的地方用reader.name
或你在xml文件中创建的属性填充你的房子对象..
检查从Linq读取XML文件
LINQ读取XML
使用LINQ to XML读取XML文档
查看MSDN教程。net语言集成的XML数据查询
在类中创建属性而不是创建公共元素和构造函数,以便更好地实现。
或者您可以使用XmlTextReader类
1. 纠正你的标签。你不能让开盘价和收盘价不匹配,否则会导致错误。
2. XML中必须有根元素。你的文档应该以某个元素开始,并以它结束(根可以是房屋)。
3.您可以使用Linq 2 XML加载对象:
XElement element = XElement.Parse(...) // or XDocument.Load
List<house> myList = (from item in element.Descendants("house")
select new house(Convert.ToInt32(item.Element("price").Value),
item.Element("neighborhood").Value,
item.Element("description").Value)).ToList();