如果我有这样的xml
<Form_1_1>
<Body>
<Code>123</Code>
</Body>
</Form_1_1>
我可以轻松地将其反序列化为此类结构
[XmlRoot("Form_1_1")]
public class Form_1_1
{
[XmlElement(ElementName = "Body")]
public Body Body { get; set; }
}
public class Body
{
[XmlElement(ElementName = "Code")]
public string Code { get; set; }
}
但是有什么方法可以映射元素,让我可以跳过
Code
元素直接到达元素 Body
吗?所以基本上将 XML 反序列化为这个对象结构
[XmlRoot("Form_1_1")]
public class Form_1_1
{
[XmlElement(?????????)] // Something go here?
public string Code { get; set; }
}
我能想到的唯一可能的方法是使用
XmlElement
属性中的 xpath 而不是固定的元素名称,但这是不允许的。
那么有什么办法可以实现这一点还是根本不可能?
您可以尝试LINQ to XML API。自 2007 年以来,它在 .Net Framework 中可用。
它非常灵活且功能强大。
c#
void Main()
{
XDocument xdoc = XDocument.Parse(@"<Form_1_1>
<Body>
<Code>123</Code>
</Body>
</Form_1_1>");
Form_1_1 form_1_1 = xdoc.Descendants("Body").Dump()
.Select(x => new Form_1_1()
{
Code = x.Element("Code").Value
}).SingleOrDefault();
Console.WriteLine(form_1_1);
}
public class Form_1_1
{
public string Code { get; set; }
}