首页 > 解决方案 > 使用 XPath 获取子元素值,其中日期是元素值

问题描述

鉴于此示例 xml

<?xml version="1.0" encoding="UTF-8"?>
<currencies>
  <currency value="gbp">
   <Date>11/5/2020</Date>
   <Close>1.3102</Close>
 </currency>
 <currency value="gbp">
   <Date>11/4/2020</Date>
   <Close>1.2988</Close>
 </currency>
 <currency value="gbp">
   <Date>11/3/2020</Date>
   <Close>1.3049</Close>
 </currency>
</currencies>

我可以使用货币获取所有节点

var xpath = $"//currencies//currency[@value='{currency}']";
var nodes = doc.XPathSelectElements(xpath);

但我无法正确获取按日期获取节点的语法

 //priceDate is a DateTime passed in
 //this produces this xpath --- //currencies//currency[@value='gbp'] 
 [Date[text()] =09/15/2015]
 var xpath = $"//currencies//currency[@value='{currency}'][Date[text()] ={priceDate:MM/dd/yyyy}]";
 var node = doc.XPathSelectElement(xpath);

任何帮助表示赞赏。我最终也想在 xpath 中检索收盘价。

标签: c#xmlxpath

解决方案


您需要注意日期格式。带前导零或不带...

按日期选择货币元素:

/currencies/currency[Date='11/4/2020']

选择按日期关闭元素:

/currencies/currency[Date='11/4/2020']/Close

推荐阅读