屬性的內部層次結構,我採用序列XmlSerializer一個對象,我的對象中指定的屬性給予XmlSerializer的指令,像這樣:如何序列化對象的XML,而扁平內
[XmlType("FooElement")]
public class Foo {
[XmlAttribute("Type")]
public string fooType;
[XmlElement("Name")]
public string Name;
[XmlElement("Bar")]
public Bar BarObject;
}
public class Bar {
[XmlElement("Message")]
public string BarString;
[XmlElement("From")]
public string FromName;
}
當一個對象的類型Foo系列化,會生成以下XML:
<Foo Type="TypeName">
<Name>Name of Foo</Name>
<Bar>
<Message>5:00 Somewhere</Message>
<From>Jane Smith</From>
</Bar>
</Foo>
我要的是爲富之內的所有數據將被夷爲平地,同樣的水平,像這樣:
<Foo Type="TypeName">
<Name>Name of Foo</Name>
<Message>5:00 Somewhere</Message>
<From>Jane Smith</From>
</Foo>
Foo和Bar保持獨立的班級對我的需求非常重要。除了合併類之外,當將序列化爲XML時,如何將Foo的元素展平爲單個級別?如果可以通過使用[Property]標籤來完成,那將是最好的。我願意切換我的XML序列化方法。
編輯:我已切換到XmlWriter班。這將使我可以在我要查找的層次結構中編寫XML元素。使用此處生成的XML的程序比C#XML工具簡單得多。更簡單的解析器在使用XmlSerializer生成的XML時遇到了困難。
這看起來不錯。一個問題:可以縮放工作,如果Bar有多個元素(Message,Date等),Bar內的每個元素都出現在XML中的Foo元素中? – ford
@ford如果你添加更多的屬性/字段到'Bar'類?當然,爲什麼不呢。只需添加並標記爲'[XmlElement]'。否則我不確定你的意思。 –
感謝您的澄清請求。我編輯了我的問題。 – ford