PDA

View Full Version : خروجی صفحه به صورت XML



Saeid59_m
یک شنبه 18 خرداد 1393, 22:48 عصر
سلام

من توی C# و ASP خیلی تازه کارم . ببخشید اگه سوالم مبتدیانه است .

من می خوام خروجی صفحه ام به صورت XML باشه که یک سری اطلاعات توش هست ، چکار باید بکنم

ممنون

alireza.zahani
دوشنبه 19 خرداد 1393, 00:30 صبح
سریالایز باید بکنی

Saeid59_m
دوشنبه 19 خرداد 1393, 21:34 عصر
عضر می خوام ، یعنی چی ؟ یه نمونه کوچک اگه باشه می تونم خودم ادامه اش بدم .

مثلا کد یک صفحه که ورودی a و b رو بگیره و جمع اونا رو در قالب یه XML خروجی بده

Saeid59_m
پنج شنبه 22 خرداد 1393, 19:08 عصر
کسی جواب اینو نمی دونه ، خواهشاً خیلی گیرم

CsharpNevisi
پنج شنبه 22 خرداد 1393, 19:38 عصر
میتونی از دیتا تیبل استفاده کنی ... و خروجی رو به ایکس ام ال تبدیل کنی ... !!!
یا میتونی دستی کدهای ایکس.ام.ال رو وارد کنی و جوابو توش جاگزاری کنی ... یا با استفاده از کلاس های اماده دات نت این کارو بکنی

Saeid59_m
پنج شنبه 22 خرداد 1393, 20:26 عصر
وقتی می خواهید از یه صفحه خروجی XML بگیرید نمی تونید اونو تو یه فایل ذخیره کنید . چون ممکنه چند کاربر به طور همزمان اون پیج رو لود کنن بنابراین بایستی سند XML به طور پویا ایجاد و با Load شدن صفحه به عنوان فایل خروجی آماده دانلود بشه .
خودم تونستم جواب رو بدست بیارم . اینم کدش :





public partial class XMLRegister : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ExportXML();
}
public void ExportXML()
{

//گره های لازم را ایجاد می کنیم
XmlDocument doc = new XmlDocument();
XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
XmlComment comment = doc.CreateComment("This is an XML Generated File For Application Register");
XmlElement root = doc.CreateElement("AppInfo");
XmlElement Name = doc.CreateElement("Name");
XmlElement RegCode = doc.CreateElement("RegCode");
XmlAttribute Active = doc.CreateAttribute("Active");
XmlAttribute TrueCm = doc.CreateAttribute("TrueCm");
XmlAttribute TrueHw = doc.CreateAttribute("TrueHw");
XmlAttribute OutOfRange = doc.CreateAttribute("OutOfRange");
XmlElement Message = doc.CreateElement("Message");

//مقادیر را به گره ها اضافه می کنیم
Name.InnerText = "چک بان";
RegCode.InnerText="103845985264";
Active.Value = "0";
TrueCm.Value = "0";
TrueHw.Value = "0";
OutOfRange.Value = "0";
Message.InnerText = "برای تست";

//سند را ایجاد می کنیم

doc.AppendChild(declaration);
doc.AppendChild(comment);
doc.AppendChild(root);
root.AppendChild(Name);
root.AppendChild(RegCode);
RegCode.Attributes.Append(Active);
RegCode.Attributes.Append(TrueCm);
RegCode.Attributes.Append(TrueHw);
RegCode.Attributes.Append(OutOfRange);
root.AppendChild(Message);

//ارسال فایل XML به عنوان خروجی
System.IO.MemoryStream stream = new System.IO.MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, System.Text.Encoding.UTF8);

doc.WriteTo(writer);
writer.Flush();
Response.Clear();
byte[] byteArray = stream.ToArray();
Response.AppendHeader("Content-Disposition", "filename=XMLRegister.xml");
Response.AppendHeader("Content-Length", byteArray.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(byteArray);
writer.Close();

}
}