我需要一个包含Descendants(Frame)的所有属性 ID (值)的列表,它具有等于的属性 SecondFeature (Descendants-ObjectClass)车辆即可。 (有节点有1个“对象”,其他2/3时间,其他没有) 这是代码的一部分:
<?xml version="1.0" encoding="utf-8" ?>
- <Frame ID="120">
<PTZData Zoom="1.000" />
- <Object ID="5">
<ObjectClass SecondFeature="vehicle" />
</Object>
</Frame>
答案 0 :(得分:1)
您可以按照XPath expression:
进行操作var xml = // your XML string here
var doc = XDocument.Parse(xml);
var frameIds = doc.Root.XPathSelectElements(
"//Frame[./Object/ObjectClass[@SecondFeature ='Vehicle']]")
.Select(n => n.Attribute("ID").Value);
当然,如果您的Frame
个节点可以不存在ID
属性,那么您需要.Select
中的额外空值检查。
或者,非xpath appraoch(但这是恕我直言,不太可读,并要求更加谨慎):
var frameIds = doc
.Descendants("ObjectClass")
.Where(n => n.Attribute("SecondFeature").Value == "Vehicle")
.Select(n => n.Parent.Parent.Attribute("ID").Value);