در این مقاله به شما آموزش می دهیم که چگونه HTML به XML تبدیل کنید. کد های مورد نیاز برای این عملیات به صورت کامل برایتان قرار داده شده است و همچنین سورس آن را نیز میتوانید از ادامه ی مطلب دریافت نمایید. ابتدا با هم نگاهی به ویژگی های یک فایب HTML می اندازیم…
همانند XML، HTML نیز یک برچسب بر اساس زبان می باشد اما با استاندارد های XML مطابقت ندارد. این ناهمخوانی به برچسب هایی که نیازی به img ندارند، اشاره دارد. حروف زیادی و یا دنبالهای حروف زیادی وجود دارند که در XML و … مجاز نمی باشند.
از این رو، اولین وظیفه ما تمیز کردن فایل HTML می باشد که در نتیجه به عنوان xml تجزیه می شود. ابزار های گوناگونی برای تمیز کردن HTML در اینترنت وجود دارد.
ما کد ها را برای نکمیل نیاز های خود اصلاح کرده ایم.
در قدم بعدی اطلاعات مورد نیاز را استخراج می کنیم. با فرض اینکه صفحه html داده شده یک طرح ثابت (fixed layout) برای نمایش یک گزارش یا اطلاعات سفارش دارد، ما می توانیم با استفاده از تجزیه کننده استاندارد XML اطلاعات را استنباط کنیم.
در این مورد ما از XML parser .NET framework استفاده کرده ایم.
string xmlContents; try { XmlDocument doc = new XmlDocument(); doc.Load(outputFileTextBox.Text); //۴th 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
برای انتقال اطلاعات به XML، قبل از هر چیز اطلاعات باید ذخیره شود. این یک قدم بسیار مهم و حیاتی می باشد و باید دقت داشته باشیم و تلاش کنیم که از ویژگی های موجود ارائه شده توسط .NET framework استفاده کنیم. ما یک کلاس ایجاد کرده ایم که می توان آن را با استفاده از 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 > (); }
مزیت آن این است که شما تمام XML سریال شده را در یک string دریافت می کنید. پس از آن، می توان محتوای XML را به راحتی روی یک فایل XML نوشت.
//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); }
موفق باشید !
هیچ دیدگاهی نوشته نشده است.