一个生成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;
}