将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文件作为输入,并返回新创建的房屋对象的列表。谁能告诉我这是怎么做的?或者建议在文件中定义房屋对象并将其加载为房屋对象的更好方法?

将xml中定义的简单对象列表加载为c#中的对象

这应该可以让你开始使用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();