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.进行编排再导出

代码
#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.这个方法好

代码
#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

posted @ 2010-09-20 11:50  xfyn  阅读(316)  评论(0编辑  收藏  举报