Xml Reader

I wanted a general Idea on what the code does below, I assume its parsing xml data from an xml file into a database. What do these methods do and why not just use an xml reader to read data instead create these extra ones...


StreamReader
XmlDocument
XmlNodeList

StreamReader
XmlDocument
XmlNodeList

namespace R_and_M_XMLReader
{
    using Cust;
    using Items;
    using SaleOrd;

    class Program
    {
        public void ReadfromXML()
        {
            if (!Directory.Exists(@"E:\Old_R&M_XML_files"))
                Directory.CreateDirectory(@"E:\Old_R&M_XML_files");

            if (Directory.Exists(@"E:\R&M_XML files"))
            {
                Item_Service itm_svc = new Item_Service();
                itm_svc.UseDefaultCredentials = true;
                itm_svc.Url = @"http://absvii.abs.com:7087/DynamicsNAVRnM/WS/R%20&%20%20M/Page/Item";

                DirectoryInfo Item_di = new DirectoryInfo(@"E:\R&M_XML files");
                FileInfo[] Item_files = Item_di.GetFiles(@"*.xml");
                foreach (FileInfo file in Item_files)
                {
                    StreamReader Item_sr = new StreamReader(file.DirectoryName + @"\" + file.Name);
                    XmlDocument ItemXML = new XmlDocument();
                    ItemXML.LoadXml(Item_sr.ReadToEnd());
                    Item_sr.Close();
                    Item itm;
                    XmlNodeList nodelist = ItemXML.SelectNodes("/Items/item");
                    foreach (XmlNode node in nodelist)
                    {
                        string itmnum = String.Empty;
                        try
                        {
                            itm = new Item();
                            itm.No = node["itemNumber"].InnerText;
                            itmnum = itm.No;
                            itm_svc.Create(ref itm);
                            itm.Item_Category_Code = node["productGroup"].InnerText;
                            itm.Product_Group_Code = node["productGroup2"].InnerText;
                            itm.Description = node["articleDescription"].ChildNodes[1].InnerText.Substring(0,30);
                            itm.Business_Product_Group = node["kernelProductGroup"].InnerText;
                            itm.Units_per_Parcel = decimal.Parse(node["packingUnit"].InnerText);
                            itm.Excise_Prod_Posting_Group = node["customsTariffNumber"].InnerText;
                            itm.Country_Region_of_Origin_Code = node["itemProductionCountry"].InnerText;
                            itm.Net_Weight = decimal.Parse(node["netWeight"].InnerText);
                            itm.Minimum_Order_Quantity = decimal.Parse(node["minimumOrderQuantity"].InnerText);
                            itm.Reordering_Policy = Reordering_Policy.Lot_for_Lot;
                            itm.Large_Description = node["articleDescription"].ChildNodes[1].InnerText;
                            itm_svc.Update(ref itm);
                            Console.WriteLine("Item Created Successfully");
                        }
                        catch (Exception ex)
                        {
                            itm_svc.Delete(itmnum);
                            Console.WriteLine(ex.ToString());
                        }
                    }
                }
            }
            #region not used

            //if (Directory.Exists(@"E:\R&M_XML files\Order"))
            //{
            //    DirectoryInfo Ord_di = new DirectoryInfo(@"E:\R&M_XML files\Order");
            //    FileInfo[] Ord_files = Ord_di.GetFiles(@"*.xml");
            //    foreach (FileInfo file in Ord_files)
            //    {
            //        //string OrderXMLstring = String.Empty;
            //        //using (XmlTextReader OrderXMLReader = new XmlTextReader(file.DirectoryName + @"\" + file.Name))
            //        //{
            //        //    SalesOrder_Service SO_service = new SalesOrder_Service();
            //        //    SO_service.UseDefaultCredentials = true;
            //        //    SO_service.Url = @"http://absvii.abs.com:7087/DynamicsNAVRnM/WS/R%20&%20%20M/Page/SalesOrder";
            //        //    while (OrderXMLReader.Read())
            //        //    {
            //        //        switch (OrderXMLReader.NodeType)
            //        //        {
            //        //            case XmlNodeType.Element: // The node is an element.
            //        //                OrderXMLstring += "<" + OrderXMLReader.Name + ">";
            //        //                break;
            //        //            case XmlNodeType.Text: //Display the text in each element.
            //        //                OrderXMLstring += OrderXMLReader.Value;
            //        //                break;
            //        //            case XmlNodeType.EndElement: //Display the end of the element.
            //        //                OrderXMLstring += "</" + OrderXMLReader.Name + ">";
            //        //                break;
            //        //        }
            //        //    }
            //        //}
            //        //file.MoveTo(@"E:\Old_R&M_XML_files\" + file.Name);
            //        StreamReader Ord_sr = new StreamReader(file.DirectoryName + @"\" + file.Name);
            //        XmlDocument OrdXML = new XmlDocument();
            //        OrdXML.LoadXml(Ord_sr.ReadToEnd());
            //        Ord_sr.Close();
            //    }
            //}
            #endregion
        }

        static void Main(string[] args)
        {
            Program pg = new Program();
            pg.ReadfromXML();
        }
    }
}

Open in new window

LVL 4
Moizsaif123Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Carl TawnSystems and Integration DeveloperCommented:
They are using a StreamReader because the XmlDocument LoadXml() method requires a string of XML, it cannot read a file directly.

I assume they are using an XmlDocument and XmlNodeList because they are only interested in a subset of the nodes in the document, and this way is simpler than using an XmlReader.

But generally, it is loading an XmlDocument, grabbing each "item" node that is a child of the "Items" node, loading each one into a custom object and then passing it to some sort of service tier to process.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Moizsaif123Author Commented:
Following the Second document "BUILD ON CLIENT SIDE" on how to publish a webservice using .NET and Navision i have followed all the step but am receiving a compile time error

I am receiving a sguigly line under "Business_Product_Group", posted a screenshot for that..I dont know if you have any idea on this or not..
Err.docx
Build-on-CLIENTSIDE.docx
0
Moizsaif123Author Commented:
Ignore the last comment, my question is will this finally dump all the data into a database or what kind of transaction will it do..
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.