我有以下XML:
<PlayerSetup>
<CardDeck name="deckOfCards"/>
<Card name="one"/>
<Card name="two"/>
<Card name="three"/>
<Card name="four"/>
<Token name="four"/>
</PlayerSetup>
我只需要检索属性name =“four”的元素,我有以下代码:
var query = from d in xdoc.Descendants("PlayerSetup")
where (string)d.Attribute("name").Value == "four"
select d;
当然,哪个不起作用,不返回任何元素。任何的想法 ?感谢。
答案 0 :(得分:2)
如果您希望"PlayerSetup"
元素下的后代元素名称=“四”,您可以这样做:
var query = from d in xdoc.Descendants("PlayerSetup").Descendants()
where (string)d.Attribute("name") == "four"
select d;
如果你想要至少有一个名字=“4”的后代元素的"PlayerSetup"
元素,你可以这样做:
var query = from d in xdoc.Descendants("PlayerSetup")
where d.Descendants().Any(c => (string)c.Attribute("name") == "four")
select d;
答案 1 :(得分:1)
您想要查看 Descendants
的{{1}} ,请抓住这些:
PlayerSetup
此解决方案使用C#6语法
答案 2 :(得分:-1)
我认为你的问题已经很久了。
你可以在这里找到它: LINQ to XML query attributes
或在这里: How to get attribute names of element in xml by LINQ in C#
:)