XPath没有得到任何节点

时间:2019-02-18 15:54:49

标签: xml xaml xpath

我正在尝试使用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>

这里我只需要显示LIGHT = Sun的COMMON内容

我尝试了这个,但是没有用

<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 :(得分:1)

您说过,您想选择COMMONLIGHT的{​​{1}}元素,但是您的XPath正在按'Sun'进行过滤,而不是字符串值{{1 }}中有一个未引用的PRICE,它将被视为好像正在比较名为'Sun'的元素一样。

将XPath更改为:

Sun