XML报文与DataSet之间的相互转换

1.将XML报文转化为DataSet

DataSet dsWareHouse = new DataSet();
StringReader srr
= new StringReader(XmlSource);
dsWareHouse.ReadXml(srr);

2.将DataSet转化为XML报文

1.直接进行写出dsWareHouse.WriteXml(D:\\a.xml);

2.进行编排再导出

ContractedBlock.gif ExpandedBlockStart.gif 代码
#region GetQueryProcessInfo

private string GetQueryProcessInfo(System.Data.DataSet ds)

{

if (ds == null || ds.Tables.Count <= 0 || ds.Tables[ 0 ].Rows.Count <= 0 )

return string .Empty;

ds.Tables[
0 ].TableName = " STEP " ;



string Remark = string .Empty;

if (ds.Tables[ 0 ].Columns.Contains( " REMARK " ))

{

Remark
= ds.Tables[ 0 ].Rows[ 0 ][ " REMARK " ].ToString();

ds.Tables[
0 ].Columns.Remove( " REMARK " );

}



System.Data.DataSet dsHeader
= new DataSet();

System.Data.DataTable dtheader
= new DataTable();

dtheader.TableName
= " RESPONSEPROCESS " ;

dtheader.Columns.Add(
" SUCCESS " , typeof ( string ));

dtheader.Columns.Add(
" REMARK " , typeof ( string ));

System.Data.DataRow drHeader
= dtheader.NewRow();

drHeader.BeginEdit();

drHeader[
" SUCCESS " ] = " TRUE " ;

drHeader[
" REMARK " ] = Remark;

drHeader.EndEdit();

dtheader.Rows.Add(drHeader);

dsHeader.Tables.Add(dtheader);



dsHeader.EnforceConstraints
= false ;

ds.EnforceConstraints
= false ;

XmlDataDocument doc
= new XmlDataDocument(dsHeader);

XmlElement newElem
= doc.CreateElement( " STEPS " );

XmlDataDocument datadoc
= new XmlDataDocument(ds);

newElem.InnerXml
+= datadoc.DocumentElement.InnerXml;

doc.DocumentElement.ChildNodes[
0 ].AppendChild(newElem);

doc.DataSet.AcceptChanges();

return doc.ChildNodes[ 0 ].InnerXml;



}

#endregion

 

得出结果大概如下:

< RESPONSEPROCESS >

< SUCCESS >True</ SUCCESS >

< REMARK >示例</ REMARK >

< STEPS >

     < STEP >

     <>

     <一堆DS里的信息>

     <>

     < /STEP >

< /STEPS >

</ RESPONSEPROCESS >

3.这个方法好

ContractedBlock.gif ExpandedBlockStart.gif 代码
#region ConstrutorXmlString

private string ConstrutorXmlString(DataSet ds)

{

DataTable dtResopnse
= ds.Tables[ 0 ];

DataTable dtStep
= ds.Tables[ 1 ];

string xmlString = " <ResponseProcess><success> " + dtResopnse.Rows[ 0 ][ " SUCCESS " ].ToString() + " </success><steps> " ;

foreach (DataRow dr in dtStep.Rows)

{

xmlString
+= " <step><seq> " + dr[ " SEQ " ].ToString() + " </seq> " +

" <operateTime> " + dr[ " OPERATE_TIME " ].ToString() + " </operateTime> " +

" <operateContent> " + dr[ " OPERATE_CONTENT " ].ToString() + " </operateContent> " +

" <operator> " + dr[ " OPERATOR " ].ToString() + " </operator></step> " ;

}

xmlString
+= " </steps><remark> " + dtResopnse.Rows[ 0 ][ " REMARK " ].ToString() + " </remark></ResponseProcess> " ;

return xmlString;

}

#endregion

转载于:https://www.cnblogs.com/weiqt/articles/1831628.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值