当有多个XPath 和 XPathSelectElement时,我已经提到XPathSelectElement 选择第二个。但这是一个不同的问题。
我有以下 xml。我需要找出对应于序列 2 的 Message 元素值(来自 StatusDetail)。如果不存在序列 2,它应该返回 null。在 C# 中使用 执行此操作的最佳方法是什么XPathSelectElement
?
注意:可以有任意数量的 StatusDetail(或根本没有)
注意:StatusDetail 元素可以按任何顺序排列。我们只需要在 2 中寻找值“2”
代码
XDocument xDoc = XDocument.Parse(@"
<Status>
<StatusMsg>
<StatusType>INVOICE</StatusType>
<StatusCode>READYPAY</StatusCode>
<StatusTimestamp>2013-03-19T21:20:54Z</StatusTimestamp>
<StatusDetail>
<Sequence>1</Sequence>
<Message>.Document posted successfully </Message>
</StatusDetail>
<StatusDetail>
<Sequence>2 </Sequence>
<Message>Invoice is ready for pay</Message>
</StatusDetail>
</StatusMsg>
</Status>
");
var statusDetails = xDoc.XPathSelectElements(@"Status/StatusMsg/StatusDetail");
更新
以下是我根据所选答案使用的解决方案
var statusDetails = xDoc.XPathSelectElements(@"Status/StatusMsg/StatusDetail/Sequence[text()=2]/../Message").FirstOrDefault();
if (statusDetails != null)
{
selectedMessage = statusDetails.Value;
}