تبدیل Html به Xml

سه شنبه 24 آذر 1394

در این مقاله به بررسی تبدیل فایل Html به Xml میپردازیم. در این مقاله توضیح خواهیم داد که چگونه یک فایل Html به Xml تبدیل خواهد شد. و قدم به قدم پیش میرویم.

تبدیل Html به Xml

اجازه دهید برخی حقایق را درباره فایل های html بیان کنیم.

html و xml یک زبان براساس tag ها میباشد. اما استاندارد انها با هم مطابقت ندارد . ناهمخوانی مربوط به تگ هایی مانند تگ img که نیاز به بسته شدن دارد . چندین کاراکتر و یا حروف که ان هم در Xml به عنوان مثال غیر قانونی هستند مانند &nbsp و غیره.

بنابراین اولین وظیفه ما تمییز کردن فایل های 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 را کلیک نمایید.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3207 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید