Исключение: выражение XPath оценивается как непредвиденный тип System.Xml.Linq.XText - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь получить значение из Xml с помощью xpath.пример 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, и я пытаюсь получить доступ к полю «Datum» узла «Tabelle», основываясь на значении «Name» в этом узле:

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, основываясь на других вопросах стека, но в результате я получаю нулевое значение.

1 Ответ

0 голосов
/ 29 ноября 2018

Если вы удалите /text(), чтобы select вернул элемент <Date> вместо его текста, он должен работать.В качестве альтернативы используйте XPathEvaluate вместо XPathSelectElement.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...