C# 尝试通过LINQ读取XML属性
xDoc变量加载XML内容,但我无法检索任何信息。它返回空值:C# 尝试通过LINQ读取XML属性,c#,xml,linq,C#,Xml,Linq,xDoc变量加载XML内容,但我无法检索任何信息。它返回空值: var xDoc = XDocument.Load(Config.CredentialFileName); //method 1 IEnumerable<XElement> rows = from row in xDoc.Descendants("domain") where (string)row.Attribute("name") == "TEST"
var xDoc = XDocument.Load(Config.CredentialFileName);
//method 1
IEnumerable<XElement> rows = from row in xDoc.Descendants("domain")
where (string)row.Attribute("name") == "TEST"
select row;
//method 2
var list = xDoc.Descendants("domain")
.Select(d => new
{
name = d.Attribute("name").Value,
username = d.Attribute("username").Value,
password = d.Attribute("password").Value //,
})
.Where(a => a.name == "TEST")
.ToList();
var xDoc=XDocument.Load(Config.CredentialFileName);
//方法1
IEnumerable rows=来自xDoc.substands(“域”)中的行
其中(字符串)行。属性(“名称”)=“测试”
选择行;
//方法2
var list=xDoc.substands(“域”)
.选择(d=>new
{
名称=d.属性(“名称”).值,
用户名=d.属性(“用户名”).值,
password=d.Attribute(“password”).Value/,
})
.其中(a=>a.name==“测试”)
.ToList();
XML文件:
<domains>
<domain name="TEST" userName="test" password="tSEvmlsmwEkjSxUwrCVf3G6"/>
</domains>
谢谢见下文
var xDoc= XElement.Load(Config.CredentialFileName);
var result = xDoc.Elements("domain").Where(x => x.Attribute("name").Value.Equals("TEST")).ToList();
见下文
var xDoc= XElement.Load(Config.CredentialFileName);
var result = xDoc.Elements("domain").Where(x => x.Attribute("name").Value.Equals("TEST")).ToList();
第一个方法可以很好地处理您提供的xml。确保您使用完全相同的结构解析xml。还要检查是否至少有一个名为
TEST
的域元素。并确保没有在xml中定义名称空间
第二个方法在用户名
属性名中有输入错误(小写的用户名
):
第一个方法可以很好地处理您提供的xml。确保您使用完全相同的结构解析xml。还要检查是否至少有一个名为
TEST
的域元素。并确保没有在xml中定义名称空间
第二个方法在用户名
属性名中有输入错误(小写的用户名
):
@最多应返回1项。您确定xml文件正常吗。@它最多应返回1项。您确定xml文件正常吗?在我删除.Elements和used.substants之后,它工作了!谢谢在我移除。元素和使用。后代之后,它工作了!谢谢
var domains = from d in xDoc.Descendants("domain")
let name = (string)d.Attribute("name")
where name == "TEST"
select new {
Name = name,
Username = (string)d.Attribute("userName"),
Password = (string)d.Attribute("password")
};