0

how can I get Password value for specified Username using linq? For example if Username equals AAAA then passsword is ss.

<?xml version="1.0" encoding="utf-8"?> 
<User>
    <Username>AAAA</Username>
    <Password>ss</Password> 
</User>
<User> 
    <Username>CCC</Username> 
    <Password>zzz</Password> 
</User> 
Giannis Paraskevopoulos
  • 18,261
  • 1
  • 49
  • 69
Arman
  • 25
  • 7

1 Answers1

1

I will start by saying you should change your xml structure to the following:

<?xml version="1.0" encoding="utf-8"?> 
<users>
    <User>
        <Username>AAAA</Username>
        <Password>ss</Password> 
    </User>
    <User> 
        <Username>CCC</Username> 
        <Password>zzz</Password> 
    </User>
</users>

Then you can try:

var username = "AAAA";
var password = XElement.Parse(xml)
    .Elements("User")
    .Where(x=>(string)x.Element("Username") == username)
    .Select(x=>(string)x.Element("Password"));

I tend to use XElement, but some would say XDocument is better:

var xdoc = XDocument.Parse(xml);
var username = "AAAA";
var password = xdoc.Root.Elements("User")
    .Where(x=>(string)x.Element("Username") == username)
    .Select(x=>(string)x.Element("Password"))
    .FirstOrDefault();
Giannis Paraskevopoulos
  • 18,261
  • 1
  • 49
  • 69