Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq访问xml中的特殊元素_C#_Linq - Fatal编程技术网

C# 使用linq访问xml中的特殊元素

C# 使用linq访问xml中的特殊元素,c#,linq,C#,Linq,如何使用linq获取指定用户名的密码值? 例如,如果Username等于AAAA,那么passswark就是ss <?xml version="1.0" encoding="utf-8"?> <User> <Username>AAAA</Username> <Password>ss</Password> </User> <User> <Username>CCC

如何使用linq获取指定用户名的密码值? 例如,如果Username等于AAAA,那么passswark就是ss

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

AAAA
党卫军
CCC
zzz

我首先说,您应该将xml结构更改为以下内容:

<?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>
我倾向于使用
XElement
,但有些人会说
XDocument
更好:

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();

这不是有效的xml,因为它没有根元素。请告诉我们您为解决此任务所做的努力。堆栈溢出不是一个“如何做到这一点”的网站。不管怎样,像你这样的问题很多。请看一下右边的“相关”面板。是的,对不起,我的结构与您编辑的一样)var xdoc=XDocument.Parse(xml);xml应该是xml文件的名称吗?示例Users.xml?在我的示例中,xml是一个字符串。如果希望xml成为文件,请使用
XDocument.Load
代替。是的,但密码没有得到值(当我调试它时,它存储了大量数据)。请按照我的编辑尝试
。FirstOrDefault()
。如果找不到匹配项,则会得到第一个匹配项或null。
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();