Solved

Add XML to asp.net Dictionary

Posted on 2010-08-21
3
368 Views
Last Modified: 2012-05-10
Hi,

I have the following xml file


<fields>
<field>
      <db value=@name/>
      <ui value=txtName/>
</field>
<field>
      <db value=@name2 />
      <ui value=txtName2 />
</field>

<field>
      <db value=@name3 />
      <ui value=txtName 3 />
</field>

</fields>

I'm trying to achieve this
                Map.Add("@name ", " txtName");
                Mapr.Add("@name2", " txtName2");
                Map.Add("@name3", " txtName3");


Thanks in advance

I have been trying to add all the values to a  dictionary. Not sure why but my data from my xml file does not get added t the dictionary.



   private static void MapFile()

        {

	           Map = new Dictionary<string, string>();

            Map.Clear();



                XmlDocument xdoc = new XmlDocument();

                xdoc.Load(@"C:\XML\XMLFILE.xml");



             XmlNode commandnode = xdoc.DocumentElement.SelectSingleNode("/root/fields/field");

                Dictionary<string, string> Map = new Dictionary<string, string>();

                 {

                    foreach (XmlNode inneritem in commandnode)

                    {

                        foreach (XmlNode data in inneritem)

                        {

                            Map.Add(????, ????);

                        }

                    }

                

                

                 }

               }

Open in new window

0
Comment
Question by:cjJosephj
3 Comments
 
LVL 12

Expert Comment

by:UnexplainedWays
ID: 33493681
Code can be cleaned up a bit but you get the idea
XElement root = XElement.Load(MapPath("~/XMLFile.xml"));
        foreach (XElement field in root.Elements())
        {
            string db = field.Element("db").Attribute("value").Value;
            string ui = field.Element("ui").Attribute("value").Value;

            Map(db, ui);
        }
        
    }

    public void Map(string db, string ui)
    {
        Response.Write(string.Format("{0} = {1} <hr/>", db, ui));
    }

Open in new window

0
 
LVL 27

Accepted Solution

by:
nmarun earned 500 total points
ID: 33493768
Try something like this.Arun
private static void ReplaceDictionaryElements()

{

    // create a collection of what you need to replace

    Dictionary<string, string> dictionary = new Dictionary<string, string>

                                                {

                                                    {"@name", " txtName"},

                                                    {"@name2", " txtName2"},

                                                    {"@name3", " txtName3"}

                                                };

    // load a the Xml

    XDocument xDocument = XDocument.Load(DataXmlFilePath);



    // write a LINQ statement that checks the <db> element's value attribute

    // with the dictionary's key

    // and creates a new collection of IEnumerable type 

    var replacedDictionary = from field in xDocument.Descendants("field")

                             from entry in dictionary

                             where field.Element("db").Attribute("value").Value == entry.Key

                             select new

                                        {

                                            Key = entry.Value,

                                            Value = field.Element("ui").Attribute("value").Value

                                        };

    // loop through the collection            

    foreach (var entry in replacedDictionary)

    {

        Console.WriteLine("{0}-{1}", entry.Key, entry.Value);

    }

}

Open in new window

0
 

Author Comment

by:cjJosephj
ID: 33494712
Thanks Guys for the replies. I ended up using Nmarun solution.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
Need to grow your business through quality cloud solutions? With everything required to build a cloud platform and solution, you may feel like the distance between you and the cloud is quite long. Help is here. Spend some time learning about the Con…

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now