XPath не получает ни одного узла - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь использовать XAML, чтобы прочитать файл XML и показать его в приложении.Это мой XML.

<?xml version="1.0" encoding="ISO8859-1" ?>
<CATALOG>
  <PLANT>
    <COMMON>Bloodroot</COMMON>
    <BOTANICAL>Sanguinaria canadensis</BOTANICAL>
    <ZONE>4</ZONE>
    <LIGHT>Sun</LIGHT>
    <PRICE>$2.44</PRICE>
    <AVAILABILITY>031599</AVAILABILITY>
  </PLANT>

  <PLANT>
    <COMMON>Columbine</COMMON>
    <BOTANICAL>Aquilegia canadensis</BOTANICAL>
    <ZONE>3</ZONE>
    <LIGHT>Shade</LIGHT>
    <PRICE>$9.37</PRICE>
    <AVAILABILITY>030699</AVAILABILITY>
 </PLANT>

Здесь мне нужно отображать только содержимое COMMON, где LIGHT = Sun

Я пробовал это, но это не работает

<Grid.Resources>
    <XmlDataProvider x:Key="CatalogusDataSource" Source="Data\catalogus.xml" XPath="CATALOG"/>
<DataTemplate x:Key="nameItemTemplate">
     <Label Content="{Binding XPath=*}"/>
</DataTemplate>
</Grid.Resources>

....

<ScrollViewer Grid.Column="0" Grid.Row="1">
        <ListBox Name="ListBoxSchaduw"
            ItemsSource="{Binding Source={StaticResource CatalogusDataSource}, 
            XPath=/CATALOG/PLANT[PRICE\=\Sun]/COMMON}"
            ItemTemplate="{StaticResource nameItemTemplate}" />
</ScrollViewer>

Понятия не имею, что я делаю не так

1 Ответ

0 голосов
/ 18 февраля 2019

Вы сказали, что хотите выбрать элемент COMMON, где LIGHT равен 'Sun', но ваш XPath фильтруется по PRICE, и вместо строкового значения 'Sun' у вас есть кавычка Sun, котораябудет оцениваться так, как если бы вы сравнивали элемент с именем Sun.

Изменить XPath на:

/CATALOG/PLANT[LIGHT='Sun']/COMMON
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...