Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Add XML to asp.net Dictionary

Posted on 2010-08-21
3
Medium Priority
?
390 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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 2000 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

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signal…
Suggested Courses

609 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