我正在尝试通过使用xpath从Xml获取值。范例xml:
<Wetter>
<Tabelle>
<internalID>38</internalID>
<Name>Algier</Name>
<Tag>Donnerstag</Tag>
<Datum>29.11.18</Datum>
<Symbol>heiter.gif</Symbol>
<deutsch>heiter</deutsch>
<englisch>partly cloudy</englisch>
<franzoesisch>Peu nuageux / Quelques nuages</franzoesisch>
<italienisch>poco nuvoloso</italienisch>
<spanisch>Parcialmente nuboso</spanisch>
<portugiesisch>Parcialmente enublado</portugiesisch>
<Tmin>14</Tmin>
<Tmax>22</Tmax>
<TminF>57</TminF>
<TmaxF>72</TmaxF>
<Regenwk>0</Regenwk>
<WindRi>N</WindRi>
<WindBft>2</WindBft>
</Tabelle>
</Wetter>
整个xml被打包到XDocument对象中,并且我试图根据此节点中的“名称”值访问“ Tabelle”节点的“ Datum”字段:
FormattableString xpath = $"/Wetter/Tabelle[Name = '{name}'][1]/Datum/text()";
var date = weatherXml.XPathSelectElement(xpath.ToString(CultureInfo.InvariantCulture));
return date.Value;
我已经在各种测试人员中测试了该xpath,这似乎还可以,但是在执行代码时,它会给出以下异常:
The XPath expression evaluated to unexpected type System.Xml.Linq.XText
我还尝试根据其他堆栈问题将XPathSelectElement更改为XpathEvaluate,但是结果是空值。
答案 0 :(得分:1)
如果删除/text()
,以使select返回<Date>
元素而不是其文本,则它应该起作用。
或者,使用XPathEvaluate
代替XPathSelectElement
。