一个生成xml的方法,使用xmlWriter进行操作,内容写入sb。
/// <summary>

/// 获取追溯信息XML流

/// </summary>

/// <param name="traceCode">追溯码</param>

/// <returns>GB2312处理的XML流</returns>

public byte[] GetSETraceInfo(string traceCode)

{



TraceContentBLL bll = new TraceContentBLL();

//获得信息列表

string productname = bll.GetProductName(traceCode);



if (string.IsNullOrEmpty(productname))

{

byte[] err = new byte[1];

err[0] = (byte)1;

return err;

}

XmlWriterSettings settings = new XmlWriterSettings();

settings.Encoding = Encoding.UTF8;

settings.Indent = true;



StringBuilder sb = new StringBuilder();

XmlWriter writer = XmlWriter.Create(sb, settings);

//加入头信息

writer.WriteProcessingInstruction("xml", "version=/"1.0/" encoding=/"utf-8/" standalone=/"yes/"");

writer.WriteStartElement(productname);



DataSet process = bll.GetProcessName(traceCode);

foreach (DataRow pRow in process.Tables[0].Rows)

{

writer.WriteStartElement(pRow[0].ToString());



DataSet recordno = bll.GetRecordNo(traceCode, pRow[0].ToString());

foreach (DataRow rr in recordno.Tables[0].Rows)

{

writer.WriteStartElement("记录" + rr[0].ToString());



DataSet traceinfo = bll.GetContents(traceCode, pRow[0].ToString(), rr[0].ToString());

foreach (DataRow tRow in traceinfo.Tables[0].Rows)

{

writer.WriteStartElement(tRow[0].ToString());

writer.WriteValue(tRow[1].ToString());

writer.WriteEndElement();

}

writer.WriteEndElement();

}

writer.WriteEndElement();

}



writer.WriteEndElement();

writer.WriteEndDocument();

writer.Close();

byte[] temp = System.Text.Encoding.GetEncoding("GB2312").GetBytes(sb.ToString());



return temp;

}