当项目的子标签具有 <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 sel -N dc="http://purl.org/dc/elements/1.1/" -t -m "//_:item[.//dc:type[not(.='Research Article')]][1]" -v . -n rssfeed.xml