如何通过按条件从 rss feed 中选择条目来创建新的 rss feed?

问题描述 投票:0回答:1

当项目的子标签具有 <dc:type>Research Article</dc:type> 标签时,我想从

rss feed
中选择条目。然后根据此标准选择项目并创建一个新的提要文件,该文件将由提要阅读器(在我的例子中是新闻船)使用。

我尝试过使用xmlstarlet

xmlstarlet sel -t -m "//dc:type[text()='Research Article']" -v ".*" -n rssfeed.xml

我也尝试过Python代码

import xml.etree.ElementTree as ET

def filter_rss_feed(input_file, output_file):
    tree = ET.parse(input_file)
    root = tree.getroot()

    ns = {'dc': 'http://purl.org/dc/elements/1.1/'}

    for item in root.findall('.//item[not(dc:type[text()="Research Article"])]', ns):
        root.remove(item)

    tree.write(output_file, encoding='utf-8', xml_declaration=True)

filter_rss_feed('rssfeed.xml', 'output_feed.xml')

但未能达到目的。有办法做到这一点吗?

我想生成这样的 rssfeed https://gist.github.com/ritajitk/33fd895e0c0fc7bd58051a4fa863bbfa

xml-parsing rss
1个回答
0
投票

如果我理解正确,您正在寻求删除某些项目 - 要选择它们,您需要考虑命名空间;你可以使用类似的东西

xml sel -N dc="http://purl.org/dc/elements/1.1/" -t -m "//_:item[.//dc:type[not(.='Research Article')]][1]" -v . -n rssfeed.xml
© www.soinside.com 2019 - 2024. All rights reserved.