تبدیل Html به Xml
سه شنبه 24 آذر 1394در این مقاله به بررسی تبدیل فایل Html به Xml میپردازیم. در این مقاله توضیح خواهیم داد که چگونه یک فایل Html به Xml تبدیل خواهد شد. و قدم به قدم پیش میرویم.
اجازه دهید برخی حقایق را درباره فایل های html بیان کنیم.
html و xml یک زبان براساس tag ها میباشد. اما استاندارد انها با هم مطابقت ندارد . ناهمخوانی مربوط به تگ هایی مانند تگ img که نیاز به بسته شدن دارد . چندین کاراکتر و یا حروف که ان هم در Xml به عنوان مثال غیر قانونی هستند مانند   و غیره.
بنابراین اولین وظیفه ما تمییز کردن فایل های html میباشد به طوری که بتوان ان را به Xml تجزیه کرد. ابزار های مختلفی در اینترنت موجود است که فایل های Html را تمییز میکند.
گام بعدی این است که اطلاعات را استخراج نمایید. به فرض یک صفحه Html داده شده است. یک طرح ثابت برای نمایش یک گزارش و یا اطلاعات مربوط به سفارش ، ما میتوانیم اطلاعات را با هر XML parser استنباط کنیم. در این مورد ما از XML parser چارچوب دات نت استفاده کرده ایم.
string xmlContents; try { XmlDocument doc = new XmlDocument(); doc.Load(outputFileTextBox.Text); //4th table element contains the required order number XmlNode node = doc.GetElementsByTagName("table")[3]; for (int i = 1; i < node.ChildNodes.Count - 1; i++) { Order order = new Order() { Part_Number = node.ChildNodes[i].ChildNodes[0].InnerText ? ? string.Empty, Customer_Part_Number = node.ChildNodes[i].ChildNodes[1].InnerText ? ? string.Empty, Supplier_Part_Number = node.ChildNodes[i].ChildNodes[2].InnerText ? ? string.Empty, Supplier_Name = node.ChildNodes[i].ChildNodes[4].InnerText ? ? string.Empty, Type = node.ChildNodes[i].ChildNodes[5].InnerText ? ? string.Empty, Material = node.ChildNodes[i].ChildNodes[6].InnerText ? ? string.Empty, Unit_of_Measure = node.ChildNodes[i].ChildNodes[7].InnerText ? ? string.Empty, Quantity = node.ChildNodes[i].ChildNodes[8].InnerText ? ? string.Empty }; bom.BomList.Add(order); } } catch (XmlException exception) { Console.WriteLine("xml parsing failed {0}", exception.Message); }
به منظور تبدیل داده ها به Xml ، اول از همه باید اطلاعات ذخیره شود . این یک گام مهم است که ما باید بیش از این که فکر کنیم و سعی کنیم به استفاده از ویژگی های ارائه شده توسط دات نت بپردازیم. ما یک کلاس برای serialize کردن با استفاده از xmlserializer ایجاد میکنیم.
// <summary> /// Order Model /// </summary> [Serializable] public class Order { public string Part_Number { get; set; } public string Customer_Part_Number { get; set; } public string Supplier_Part_Number { get; set; } public string Supplier_Name { get; set; } public string Type { get; set; } public string Color { get; set; } public string Material { get; set; } public string Unit_of_Measure { get; set; } public string Quantity { get; set; } } [XmlInclude(typeof(Order))] public class BOM { [XmlElement(ElementName = "Order")] public List < Order > BomList = new List < Order > (); }
//Serialize bills of material list. howeverm it needs the original type of order class XmlSerializer xmlSerializer = new XmlSerializer(typeof(BOM), new Type[] { typeof(Order) });; //Serialize using xmlserializer using(StringWriter writer = new StringWriter()) { xmlSerializer.Serialize(writer, bom); xmlContents = writer.ToString(); } //write serialized contents to xml file using(StreamWriter fileWriter = new StreamWriter(outputFileTextBox.Text)) { fileWriter.Write(xmlContents); }
در مثالی که قرار داده شده یک فایل Html قرار دادیم و شما میتوانید ان را تست نماید . لازم است یک فایل خالی از نوع html ایجاد کنید و در قسمت output ادرس فایل خالی را بدهید انگاه کلید Generate را کلیک نمایید.
- C#.net
- 3k بازدید
- 1 تشکر