"> آموزش تبدیل HTML به XML | ام اس پی سافت

آموزش تبدیل HTML به XML

XML

در این مقاله به شما آموزش می دهیم که چگونه 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);  
}  

موفق باشید !

داریوش فرخی

داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

کدیشن ! مارکت پروژه های برنامه نویسی راه اندازی شدیه توکه پا بریم ببینم