Select 基于属性值的节点 LINQ to xml
Select node based on attribute value LINQ to xml
我想select xml 基于属性的节点。我对 linq to xml 的工作原理还很陌生,无法编写正确的查询。我该如何解决?
我的XML
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Enable0" value="true" />
<!-- dumb comment -->
<add key="Enable1" value="false" />
<!-- dumb comment1-->
<add key="Enable2" value="true" />
<add key="Enable3" value="false" />
<!-- dumb comment2 -->
<add key="Enable4" value="true" />
</appSettings>
<asdf>
<a key="b"></a>
<a key="c"></a>
<a key="d"></a>
</asdf>
</configuration>
我的尝试:
private string GetAttribute(string name)
{
//???
var query = from node in deafultElement.Elements("add")
where node.Attribute("key").Value == name
select node.Attribute("value").value;
return query.toString();
//currently returns "System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String]"
}
var query = (from node in deafultElement.Elements("add")
where node.Attribute("key").Value == name
select node.Attribute("value").Value).FirstOrDefault();
return query
您也可以使用 linq 方法的语法来达到相同的结果。
string value = defaultElement.Elements("add")
.FirstOrDefault(n => n.Attribute("key").Value == name)
.Attribute("value").Value;
我想select xml 基于属性的节点。我对 linq to xml 的工作原理还很陌生,无法编写正确的查询。我该如何解决?
我的XML
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Enable0" value="true" />
<!-- dumb comment -->
<add key="Enable1" value="false" />
<!-- dumb comment1-->
<add key="Enable2" value="true" />
<add key="Enable3" value="false" />
<!-- dumb comment2 -->
<add key="Enable4" value="true" />
</appSettings>
<asdf>
<a key="b"></a>
<a key="c"></a>
<a key="d"></a>
</asdf>
</configuration>
我的尝试:
private string GetAttribute(string name)
{
//???
var query = from node in deafultElement.Elements("add")
where node.Attribute("key").Value == name
select node.Attribute("value").value;
return query.toString();
//currently returns "System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String]"
}
var query = (from node in deafultElement.Elements("add")
where node.Attribute("key").Value == name
select node.Attribute("value").Value).FirstOrDefault();
return query
您也可以使用 linq 方法的语法来达到相同的结果。
string value = defaultElement.Elements("add")
.FirstOrDefault(n => n.Attribute("key").Value == name)
.Attribute("value").Value;