通过搜索"名称"来检索元素"值"

Dan*_*Dan 2 c# xml

我很肯定这是一个简单的问题,但我无法弄清楚.

我正在将一个XML文件下载到C#中的字符串,它包含以下格式的项目:

<attribute name="Make" value="Volvo" />
<attribute name="Color" value="Blue" />
<attribute name="Damage" value="Rear scratched" />
<attribute name="Damage" value="Left hand side dented" />
Run Code Online (Sandbox Code Playgroud)

而我想要做的就是将整个文档中的"Damage"的所有值(无论它们落在何处)都放入一个数组中.我一直在玩XmlDocument/XmlNodeList,但我无法弄清楚如何使这个工作.

我很想用RegEx来做这件事,但感觉非常非常脏.

Dan*_*rth 7

用途XDocument:

var doc = XDocument.Parse(xml);
var result = doc.Descendants("attribute")
                .Where(x => x.Attribute("name") != null &&
                            x.Attribute("value") != null)
                .Where(x => x.Attribute("name").Value == "Damage")
                .Select(x => x.Attribute("value").Value)
                .ToArray();
Run Code Online (Sandbox Code Playgroud)

请注意:
此代码相对简单,因为它考虑attribute了整个文档中的所有节点.