Solved

Add XML to asp.net Dictionary

Posted on 2010-08-21
3
374 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

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

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

Suggested Solutions

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…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…

772 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