0

My Goal: I want to parse XML file for "REGISTRATION_CATALOGNUMBER" which is 987654 and display it in a textbox. My XML file looks like this:

<?xml version="1.0"?>
<!-- This file was generated. -->
<ModificationMap>
<replace>
<!-- Asset Type -->
<text symbol="__HIS_NAME__">Example</text>
<text symbol="__HIS_Example1__">My Program</text>
<text symbol="__HIS_Example2__">EG</text>
<text symbol="__HIS_Example3__">XMLPARSING</text>
<text symbol="__HIS_Example4__">Not Applicable</text>
<text symbol="__HIS_ExampleINTERVAL__">300</text>
</replace>
<replace>
<!-- HIS profile -->
<text symbol="__EG_HIS_NAME__">EG_NotConfigured</text>
<text symbol="__EG_HIS_PASSWORD__">password</text>
<text symbol="__EG_HIS_ExampleINTERVAL__">300</text>
<text symbol="__EG_SERIALNUMBER__">666</text>
</replace>
<replace>
<!-- Changed Number and ID -->
<text symbol="__Example_SERIALNUMBER__">123456789</text>
<text symbol="__REGISTRATION_CATALOGNUMBER__">987654</text>
<text symbol="__HER_ExampleINTERVAL__">300</text>
<text symbol="__HER_LEVEL__">WARN</text>
<text symbol="__Example_VERSION__">20</text>
<text symbol="__Example_THIRDPARTYVERSION__">20</text>
<!-- Asset Profile -->
<text symbol="__HIS_MEMBERNAME__">EG_NotConfigured</text>
<text symbol="__HIS_FRIENDLYNAME__">XMLProgram</text>
<text symbol="__HIS_DESCRIPTION__">testprogram</text>
</replace>
<replace>
<!-- Software director -->
<text symbol="__ADMINUSERNAME__">admin</text>
<text symbol="__ADMINPASSWORD__">password</text>
<text symbol="__HIS_PORT__">0000</text>
<text symbol="__HIS_SCHEME__">http</text>
</replace>
<replace>
<!-- Misc settings -->
<text symbol="__LOG_LEVEL__">ERROR</text>
</replace>
</ModificationMap>

My Code:

public UserControl1()
{
    InitializeComponent();

    var dict2 = XDocument.Load(@"C:\Users\Smith\Desktop\DEMO.xml")
        .Descendants("text")
        .ToDictionary(f => f.Attribute("symbol").Value, 
        f => f.Value);
    textBox7.Text = dict2["__REGISTRATION_CATALOGNUMBER__"];
}

I am getting an Error:

ArgumentException was unhandled. An item with the same key has already been added.

Please can you help me rectify the problem? Thanks for your help! I am new to c#. :)

4
  • Why did you delete your previous question and then ask exactly the same thing again? Commented Sep 27, 2013 at 20:38
  • @JonSkeet The XML File was wrong. I apologize for that. I tried with this new XML file. Still getting the same error: ArgumentException was unhandled. An item with the same key has already been added. Commented Sep 27, 2013 at 20:40
  • You should have edited the previous question and replied to my comment in that question then... Commented Sep 27, 2013 at 20:41
  • @JonSkeet Thanks for your suggestion. I apologize. This won't happen again. Commented Sep 27, 2013 at 20:42

1 Answer 1

1

You don't need whole document parsed to Dictionary<string, string> to get the value you need. Try following:

var query = XDocument.Load(@"C:\Users\Smith\Desktop\DEMO.xml")
    .Root.Elements("replace").Elements("text")
    .Where(f => (string)f.Attribute("symbol") == "__REGISTRATION_CATALOGNUMBER__")
    .Select(f => (string)f);
textBox7.Text = query.FirstOrDefault();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.