我正在使用c#和XmlSerialiser类从DTO对象创建xml。具有DTO对象中不同子节点的序列化节点
现在我不得不产生这样的XML文本:
<Order>
<OrderNo>123456</OrderNo>
<Positions>
<TextPosition>
<Text>This is Order No 123456</Text>
</TextPosition>
<ItemPosition>
<ItemId>14789</ItemId>
<ItemName>Product 1</ItemName>
</ItemPosition>
</TextPosition>
<ItemPosition>
<ItemId>456</ItemId>
<ItemName>Product 2</ItemName>
</ItemPosition>
<TextPosition>
<Text>Good bye</Text>
</TextPosition>
<SumPosition>
<Value>123.45 USD</Value>
</SumPosition>
</Positions>
</Order>
我使用属性来装饰我的班,一切工作正常。 我还无法解决的一件事。我需要用里面的不同标签TextPosition, ItemPosition, ValuePosition, ...
生成一个标签Positions
。
如何在c#中实现此目的?
目前我Order类包含
[XmlElement("Positions")]
public PositionList Positions { get; set; }
PositionList是
public class PositionList
{
[XmlElement("Positions")]
public List<Object> Positions { get; set; }
}
一类为了避免出现InvalidOperationException我加
[XmlInclude(typeof(Textposition))]
[XmlInclude(typeof(ItemPosition))]
[XmlInclude(typeof(SumPosition))]
我Order类。
然而,不是产生
<Positions>
<TextPosition>...</TextPosition>
</Positions>
串行产生:
<Position d4p1:type="TextPosition" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">...</Position>
的事情是,在不需要反序列化我的自我但在一个非常提供一个XML文件严格格式为一个客户。有没有办法实现这个?
太棒了!我添加了一个辅助类PositionList,其中一个属性为'公共列表职位{get; set;}'以在订单和职位之间获得额外的''标签,但是,这确实实现了。非常感谢你。 –
2012-03-15 17:03:05
没问题,很高兴我能帮忙,对不起,我错过了额外的标签:) – SwDevMan81 2012-03-15 17:34:49