如何从WPF中的XML文件访问<content:encoded>数据?</content:encoded>

时间:2012-01-12 22:23:22

标签: c# .net wpf xml xpath

我正在使用WPF编写RSS提要,其中一个提要是由wordpress创建的自定义提要。它有一些嵌套在我想要的<content:encoded>标签内的数据,但我无法做到。我试图将这些数据绑定到我的一些wpf控件。

一些代码:

<XmlDataProvider x:Key="" XPath="//item" Source="" />

然后我有一个列表框,其中源绑定到此静态资源, 接下来我有一个模板,其中包含许多绑定到xml数据的控件。

我可以从xml文件中提取某些项目,即

<TextBlock Text="{Binding XPath="title"} />

工作正常。但现在我想访问嵌套在<img src="....png">内的<content:encoded>。像Source={Binding XPath="content-encoded/img/@src"}这样的XPath语法 不起作用。

如果您对如何获取XML文件的这一部分有任何见解,那就太棒了!

1 个答案:

答案 0 :(得分:0)

content是一个需要mapped的XML命名空间,这里是我写的一些RSS阅读器示例中的一个例子:

<Window.Resources>
    <s:Uri x:Key="FeedUri">
        http://backend.deviantart.com/rss.xml?q=boost%3Apopular+max_age%3A8h&amp;type=deviation
    </s:Uri>
    <XmlNamespaceMappingCollection x:Key="NsMapping">
        <XmlNamespaceMapping Prefix="media" Uri="http://search.yahoo.com/mrss/"/> <!-- Slash at the end on dA for some reason... -->
        <XmlNamespaceMapping Prefix="atom" Uri="http://www.w3.org/2005/Atom"/>
    </XmlNamespaceMappingCollection>
    <XmlDataProvider x:Key="Data" Source="{StaticResource FeedUri}"
                     XmlNamespaceManager="{StaticResource NsMapping}"/>
</Window.Resources>

<!-- media and atom being used in a binding: -->
<Image Source="{Binding XPath=media:thumbnail/@url}" ToolTip="{Binding XPath=title}"/>
<Image Source="{Binding XPath=/rss/channel/atom:icon}" .../>

因此,对于content的映射,应该是:{Binding XPath="content:encoded/img/@src"}