在我的问题上,我在XElement中有以下XML。在完整的XML中可以有许多这些“标识符”节点,我的导航工作到此为止。
<Identifiers>
<identifier>
<Type>MR</Type>
<Value>123321</Value>
<Authority></Authority>
</identifier>
<identifier>
<Type>AN</Type>
<Value>123321-01</Value>
<Authority></Authority>
</identifier>
<identifier>
<Type>PN</Type>
<Value>123321</Value>
<Authority></Authority>
</identifier>
</Identifiers>
这是Linq-To-XML:
id = xd.Root.Element("Patient");
id = id.Element("Identifiers"); //At this point "id" contains the above XML.
id = id.Elements("Identifier").FirstOrDefault(x => x.Element("Type").Value == "AN");
它是崩溃的最后一个语句,并返回null。
我在这里缺少什么?
答案 0 :(得分:6)
由于XML区分大小写,因此尝试使用“identifier”替换上一个语句中的“Identifier”。
答案 1 :(得分:1)
假设xd
是你的XDocument,那么试试这个:
xd.Descendents("identifier").FirstOrDefault(x => x.Element("Type").Value == "AN");
事实上,如果您只希望在文档中输入单个“AN”值,那么您可以这样做:
xd.Descendents("Type").FirstOrDefault(x => x.Value.Equals("AN"));
或者,如果您可能有许多值为“AN”的“类型”:
xd.Descendents("Type").Where(x => x.Value.Equals("AN"));