110,536
社区成员
发帖
与我相关
我的任务
分享
public static string GetRequestXml(IRequest header, IRequest body, Encoding encoding, bool addtionAttr = true)
{
using (MemoryStream ms = new MemoryStream())
{
XmlWriterSettings settings = new XmlWriterSettings();
//settings.OmitXmlDeclaration = true;
settings.Encoding = new UTF8Encoding(false);
settings.Indent = true;
using (XmlWriter sw = XmlWriter.Create(ms, settings))
{
//package_type = "xml" encoding = "UTF-8"
sw.WriteStartDocument();
sw.WriteStartElement("service");
if (addtionAttr)
{
sw.WriteAttributeString("package_type", "xml");
sw.WriteAttributeString("encoding", "UTF-8");
}
sw.FillStreamWriter("sys-header", header);
sw.FillStreamWriter("body", body);
sw.WriteEndElement();
sw.WriteEndDocument();
sw.Flush();
}
ms.Close();
return encoding.GetString(ms.ToArray()).Trim();
}
}
private static void FillStreamWriter(this XmlWriter sw, string elementName, IRequest request)
{
sw.WriteStartElement(elementName);
var collection = request?.ToCollection();
if (collection != null)
{
foreach (string key in collection)
{
sw.WriteElementString(key, collection[key]);
}
}
sw.WriteEndElement();
}