我正在编写一个简单的 RSS 解析器(我知道已经写了很多),我偶然发现了一个问题。假设我有以下 RSS 提要:
<channel>
<title>Sunset Boulevard</title>
<link>http://www.imdb.com/title/tt0043014/</link>
<description>A hack screenwriter writes a screenplay..</description>
<language>English</language>
<item>
<rating>8.6</rating>
</item>
</channel>
我有一种方法,可以通过给定的标签和子标签将它们提取到一个简单的哈希中。这是我的“方法”:
def extract_text_from_tag(text, tag)
text =~ /<#{tag}.*?>(?<tag_text>.*?)<\/#{tag}>/m ? $~[:tag_text] : ''
end
为了解析频道,我首先提取其文本,然后使用一组预定义的标签(标题、链接等)提取它们的数据。但是,我希望我的正则表达式只匹配我的标签的直接子级。
例如在这里,如果我传递“标题”、“链接”、“描述”、“语言”和“评级”标签,我想匹配除“评级”之外的所有标签(因为它是项目的子项)。