<CBECMESSAGE>
<MESSAGEHEAD>
<MESSAGEID>报文编号唯一标示(推荐使用GUID)</ MESSAGEID >
<MESSAGETYPE>报文类型</MESSAGETYPE>
<SENDERID>SENDERID</SENDERID>
<RECEIVERID>RECEIVERID</RECEIVERID>
<SENDTIME>yyyy-MM-ddTHH:mm:ss</SENDTIME>
</MESSAGEHEAD>
<MESSAGEBODY>
<BODYMASTER>
<ORDERNO>DD12345678912345</ORDERNO>
<CBECBILLNO>QD12345678912345</CBECBILLNO >
<CROSS_ORDER_ID >KJDD123456789123</CROSS_ORDER_ID>
<REG_NO>ZC1234567</REG_NO>
<REG_NAME>供应链服务有限公司</REG_NAME>
<CARRIER_CODE>CYR123456789123456789</CARRIER_CODE>
<CARRIER_NAME>供应链服务有限公司</CARRIER_NAME>
<TRADE_CO>YKJ1234567</TRADE_CO>
<TRADE_CNAME>电子商务服务有限公司</TRADE_CNAME>
<APL_CODE>SB12345678</APL_CODE>
<APL_NAME>商务服务有限公司</APL_NAME>
</BODYMASTER>
<GOODS_RECORD>
<NO>1</NO>
<GOODSNO>GN215487963215478962</GOODSNO>
<GOODS_CN>鞋带</GOODS_CN>
<GOODS_EN></GOODS_EN>
<HS_CODE>5806320090</HS_CODE>
<GOODS_MODEL>鞋带;机织;100%化学纤维</GOODS_MODEL>
<GOODS_BRAND>Aventure牌</GOODS_BRAND>
<COUNTRY>142</COUNTRY>
<QUANTITY>011</QUANTITY>
<UNIT>5</UNIT>
</GOODS_RECORD>
</MESSAGEBODY>
</CBECMESSAGE>
如上,是XML报文的格式。问题如下:
<BODYMASTER>、<GOODS_RECORD>这两个子节点下的数据我已经解析成DataSet了,其中包含了这BODYMASTER表、GOODS_RECORD表这2个表,怎么把DataSet的这两个表的数据解析成一个到一个head表里面?
BODYMASTER,GOODS_RECORD两个节点下的内容数据类型和名称都不完全一样,放到一张datatable似乎不太合适。
如果非要放到一张表,那就创建datatable,列数以BODYMASTER,GOODS_RECORD两者中子节点数目多的为准,建议再加一列,NodeType,用来区分是BODYMASTER还是GOODS_RECORD。
写表只能DataTable?然后Update?
即使这样,何况你也还可以创建一张嘛,然后把另两张写进去。
大哥,不好意思,问题写错了,是解析成了一个DataSet,里面包含了BODYMASTER表、GOODS_RECORD表这2个表,怎么把他们里面的数据解析成一个表呢?
@差不哆丨好先生: new 一个DataSet,弄进去,好像叫Tables
DataSet.ReadXml ?
首先你这是在做接口开发?数据本地化?
你的意思是把BODYMASTER表、GOODS_RECORD表这2个表合并为一张表?为什么要解析成dataset?直接反序列化为一个实体不行吗?操作实体比操作datatable简单很多。
我懂了。思路是在数据库新建一个表,其中这个表的字段,必须都包含了2个表的所有子节点,然后在用foreach循环第一个表写入新建的表,第二个表也一样做就好了