【发布时间】:2014-08-17 04:00:10
【问题描述】:
我需要从具有指定属性名称的所有节点中获取所有值的集合。例如,从下面的 XML 中,我需要来自所有节点的值集合,其中 Country 是变量之一:
CAN
true
false
US
true
false
MEX
true
false
我已经摆弄了几个小时,并查看了我能找到的所有 MSDN 示例,但我的结果是空的。
更新: 随着我的进步,我会不断更新这个。设法获得了对 XML 的更新,这使得过滤变得更加简单,并且也更新了我的查询。现在的问题是我只得到第一个节点而不是 Name="Country"
的所有节点的集合最终更新:问题已解决。请看下面我的回答。不过很高兴看到任何建议的改进。
这是我要使用的 XML:
<?xml version="1.0" encoding="utf-8"?>
<FoobarData ReportId="0cd8eacf-b577-4974-ae15-1496c5ec06b8">
<FoobarInfo>
<PreparedBy>Bob Boozer</PreparedBy>
<ReviewedBy>Connie Careful</ReviewedBy>
</FoobarInfo>
<FoobarFoos>
<Foo>
<FooVariables>
<FooVariable VariableName="Country">
<VariableValue>CAN</VariableValue>
<VariableIsRed>true</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="Company">
<VariableValue>Company A</VariableValue>
<VariableIsRed>true</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="DaysWithoutInjury">
<VariableValue>11203</VariableValue>
<VariableIsRed>false</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="DaysSinceBigMeeting">
<VariableValue>857</VariableValue>
<VariableIsRed>false</VariableIsRed>
<VariableIsHappy>true</VariableIsHappy>
</FooVariable>
</FooVariables>
</Foo>
<Foo>
<FooVariables>
<FooVariable VariableName="Country">
<VariableValue>US</VariableValue>
<VariableIsRed>true</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="Company">
<VariableValue>Company B</VariableValue>
<VariableIsRed>true</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="DaysWithoutInjury">
<VariableValue>976</VariableValue>
<VariableIsRed>false</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="DaysSinceBigMeeting">
<VariableValue>780</VariableValue>
<VariableIsRed>false</VariableIsRed>
<VariableIsHappy>true</VariableIsHappy>
</FooVariable>
</FooVariables>
</Foo>
<Foo>
<FooVariables>
<FooVariable VariableName="Country">
<VariableValue>MEX</VariableValue>
<VariableIsRed>true</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="Company">
<VariableValue>Company C</VariableValue>
<VariableIsRed>true</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="DaysWithoutInjury">
<VariableValue>1455</VariableValue>
<VariableIsRed>false</VariableIsRed>
<VariableIsHappy>false</VariableIsHappy>
</FooVariable>
<FooVariable VariableName="DaysSinceBigMeeting">
<VariableValue>580</VariableValue>
<VariableIsRed>false</VariableIsRed>
<VariableIsHappy>true</VariableIsHappy>
</FooVariable>
</FooVariables>
</Foo>
</FoobarFoos>
</FoobarData>
【问题讨论】:
标签: c# linq-to-xml