[英]c# deserialize xml from different node
我有一個看起來像這樣的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Adresses>
<Message>
<Header>
<MessageID>96</MessageID>
<Timestamp>22.08.2014 10:25:01</Timestamp>
</Header>
<Body>
<Person SurName="Muster" Prename="Max">
<Adress Street="Street 1"/>
</Person>
<Person SurName="Muster" Prename="Max">
<Adress Street="Street 1"/>
</Person>
<Person SurName="Muster" Prename="Max">
<Adress Street="Street 1"/>
</Person>
</Body>
</Message>
</Adresses>
從這個xml中,我只希望正文標記內的部分。 我使用XmlSerializer和注釋進行反序列化。 所以我有這樣的模型
[XmlRoot("Body")]
public class BodyXml
{
public BodyXml()
{}
[XmlElement("Person")]
public Person[] Persons { get; set; }
}
現在我的問題是如何從正文標簽而不是從地址標簽中獲取XmlSerializer進行序列化? 我的模型中是否需要其他注釋?
謝謝和問候
根據其他約束,可以考慮編寫一個快速而骯臟的包裝器,該包裝器將反序列化整個XML(以BodyXml
作為其成員),或者可以選擇僅選擇xml的相關部分,例如:
var serializer = new XmlSerializer(typeof(BodyXml));
var xDoc = XDocument.Parse(YOUR_XML_STRING);
using (var xmlReader = xDoc.Descendants("Body").Single().CreateReader())
{
var result = serializer.Deserialize(xmlReader);
}
編輯:沒有任何上下文,我會去后者。
使用XmlIgnoreAttribute
您可以如下添加地址屬性
[XmlIgnoreAttribute]
public AddressClass Adress{get;set;}
在這里,AddressClass可以是您的Address屬性或其他一些類的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.