Solved

Add XML to asp.net Dictionary

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

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

In .NET 2.0, Microsoft introduced the Web Site.  This was the default way to create a web Project in Visual Studio 2005.  In Visual Studio 2008, the Web Application has been restored as the default web Project in Visual Studio/.NET 3.x The Web Si…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

707 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

16 Experts available now in Live!

Get 1:1 Help Now