【发布时间】:2010-12-29 05:09:51
【问题描述】:
希望我选择了正确的论坛。
我有一个数据集对象,其中一个表来自一个通用自定义组件的 GetDS 方法。我需要将 XML 传递给另一个进程(分块为字节数组)。我已经完成了所有工作,但是 XML 缺少一些消费过程所期望的属性。
我创建了一个数据集对象,并且可以像这样控制 TableName(根元素)和行的名称:
da.Fill(ds, "Foo")
ds.DataSetName = "FooUpload"
我使用 GetXML 方法序列化为如下所示的 XML:
<?xml version="1.0" standalone="yes" ?>
<FooUpload>
<Foo>
<FooMasterID>483</FooMasterID>
<Country>27</Country>
<PaymentCode>ANN</PaymentCode>
<Amount>132</Amount>
<PaidDate>2012-12-31 00:00:00</PaidDate>
<PaidBy>FooServices</PaidBy>
</Foo>
</FooUpload>
调用进程期望
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<FooUpload **ClientCode="FOOO" RecordCount="1" CreateDate="2008-12-09T15:02:18.920" CreateUser="valli"**>
<Foo>
<FooMasterID>483</FooMasterID>
<Country>27</Country>
<PaymentCode>ANN</PaymentCode>
<Amount>132</Amount>
<PaidDate>2012-12-31 00:00:00</PaidDate>
<PaidBy>FooServices</PaidBy>
</Foo>
</FooUpload>
注意 FooUpload 元素的属性。该节点是DataSet中DataTable的名称。
我已经搜索了如何控制 XMLSerializer 并找到了很多自定义对象的示例。我什至找到了将列映射设置为接近的 MappingType.Attribute 的示例,但我需要使用根元素来执行此操作,该根元素实际上是数据集的 TableName。
我觉得我已经很接近了,如果我找不到更优雅的解决方案,我将不得不创建一个 hack,比如循环和吐出更改的字符串以及 XML 的其余部分。
提前致谢(祈祷)!
【问题讨论】: