我浏览了前三页搜索页中的所有答案,但无法得到解决方案;第二页之后的问题甚至都不相关。
在此 RSS 源中:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns="http://purl.org/rss/1.0/">
<channel rdf:about="https://www.myfeed.tld/">
<title>My Feed</title>
<link>https://www.myfeed.tld/</link>
</channel>
<item rdf:about="https://www.myfeed.tld/mypost">
<title><![CDATA[Posting to SO SO Good]]></title>
<link>https://www.myfeed.tld/mypost</link>
<dc:date>2024-06-19T07:48:00-05:00</dc:date>
</item>
</rdf:RDF>
我需要获取以下文本内容:
<rdf:RDF><channel><title>
<rdf:RDF><item><title>
<rdf:RDF><item><dc:date>
根据这个答案,我认为我应该能够使用:
xmllint --xpath "//*[local-name()='rdf:RDF']/channel/title/text()" feed.rss
xmllint --xpath "//*[local-name()='rdf:RDF']/item/title/text()" feed.rss
xmllint --xpath "//*[local-name()='rdf:RDF']/item/*[local-name()='dc:date']/text()" feed.rss
我尝试了每一个变体,但我只得到:XPath set is empty
使用 时不需要命名空间前缀
local-name()
。此外,没有前缀的元素仍然具有默认xmlns="http://purl.org/rss/1.0/"
命名空间,因此local-name()
也必须在那里使用或者,也可以按如下方式使用命名空间
结果