【发布时间】:2015-11-01 18:41:27
【问题描述】:
我在将 XML 文档解析为自定义类时遇到了很多麻烦。我试图阅读我在网上和这里可以找到的内容,但我仍然没有得到任何地方。我正在开发一个房地产应用程序,并且正在尝试为您拥有的基本属性建模:
- 1 个属性
- 1 个属性可以有多个建筑物
- 每栋建筑可以有多个租户。
我决定尝试将数据存储在一个xml文档中,我做了一个例子如下:
<?xml version="1.0" encoding="UTF-8"?>
<Property>
<Name>Grove Center</Name>
<Building>
<Name>Building1</Name>
<Tenant>
<Name>Tenant1</Name>
<SquareFeet>2300</SquareFeet>
<Rent>34000</Rent>
</Tenant>
<Tenant>
<Name>Tenant2</Name>
<SquareFeet>3100</SquareFeet>
<Rent>42000</Rent>
</Tenant>
<Tenant>
<Name>Tenant3</Name>
<SquareFeet>1700</SquareFeet>
<Rent>29000</Rent>
</Tenant>
</Building>
<Building>
<Name>Building2</Name>
<Tenant>
<Name>Tenant1</Name>
<SquareFeet>6150</SquareFeet>
<Rent>80000</Rent>
</Tenant>
<Tenant>
<Name>Tenant2</Name>
<SquareFeet>4763</SquareFeet>
<Rent>60000</Rent>
</Tenant>
</Building>
</Property>
实际上,我的第一个问题是这种格式是否正确。我看到了一些 xml 示例,他们在开始列出每个建筑物的各个 <Building> 标记之前添加了一个额外的标记,例如 <buildings>。那有必要吗?我看到的 W3C 示例并没有那样做.. 但是 stackexchange 上的这篇文章非常接近我所做的:Parsing XML with Linq with multiple descendants
这是我的 C# 类的代码:
public class Property
{
public string Name { get; set; }
public List<Building> Buildings = new List<Building>();
}
public class Building
{
public string Name { get; set; }
public List<Tenant> Tenants = new List<Tenant>();
}
public class Tenant
{
public string Name { get; set; }
public int SF { get; set; }
public decimal Rent { get; set; }
}
我不确定在类定义中正确使用列表中的 new 关键字是否是一种好习惯。但我稍后在我的程序中尝试将建筑物或租户添加到列表中时遇到错误,所以我没有不知道还能做什么。现在我的主要代码并没有比:
Property p = new Property();
XDocument doc = XDocument.Load(@"C:\Users\SampleUser\Desktop\sample-property.xml");
感谢任何帮助,谢谢
【问题讨论】:
-
反序列化不是更好吗?
-
Q1:格式没有错。您的格式意味着该物业由多个建筑物组成。另一个首先指定该属性由多个建筑物组成,然后列出它们。两者都是正确的。
标签: c# xml linq linq-to-xml