xml 内容如何映射C#多个类
时间: 2024-05-15 17:13:27 浏览: 144
可以使用 XML 序列化和反序列化来实现将 XML 内容映射到 C# 多个类。
首先,需要在 C# 中定义与 XML 内容对应的类结构,可以使用 `XmlRoot`、`XmlElement`、`XmlAttribute` 等特性来标记类和属性。例如:
```csharp
[XmlRoot("person")]
public class Person
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("age")]
public int Age { get; set; }
[XmlElement("address")]
public Address Address { get; set; }
}
public class Address
{
[XmlElement("city")]
public string City { get; set; }
[XmlElement("street")]
public string Street { get; set; }
[XmlElement("zip")]
public string Zip { get; set; }
}
```
然后,使用 `XmlSerializer` 类来序列化和反序列化 XML 内容。例如,将 XML 内容反序列化为 `Person` 对象:
```csharp
string xml = "<person><name>John</name><age>30</age><address><city>New York</city><street>Main St.</street><zip>10001</zip></address></person>";
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (StringReader reader = new StringReader(xml))
{
Person person = (Person)serializer.Deserialize(reader);
}
```
如果 XML 内容包含多个 `<person>` 元素,可以将其反序列化为 `Person[]` 数组:
```csharp
string xml = "<people><person><name>John</name><age>30</age><address><city>New York</city><street>Main St.</street><zip>10001</zip></address></person><person><name>Jane</name><age>25</age><address><city>Los Angeles</city><street>1st St.</street><zip>90001</zip></address></person></people>";
XmlSerializer serializer = new XmlSerializer(typeof(Person[]), new XmlRootAttribute("people"));
using (StringReader reader = new StringReader(xml))
{
Person[] people = (Person[])serializer.Deserialize(reader);
}
```
类似地,使用 `XmlSerializer` 类的 `Serialize` 方法可以将 C# 对象序列化为 XML 内容。
阅读全文