我想使用Ruby
中的doc.xpath从XML文件中仅提取body节点/标记要从XML文件中提取的节点:
<wcm:element name="Body"><p>A new study suggests that <a href="ssNODELINK/SmokingAndCancer">tobacco</a> companies may be using online video portals, such as YouTube, to get around advertising restrictions and market their products to young people.</p>
</wcm:element>
我尝试了以下内容:
page_content = doc.xpath("/wcm:root/wcm:element").inner_text
但这会提取每个节点的所有内容
然后我尝试了这个:
page_content = doc.xpath("/wcm:root/wcm:element/Body")
但是不起作用。
任何人都有任何建议如何使用Ruby中的doc.xpath精确提取XML文件的正文部分?
答案 0 :(得分:0)
我不是100%肯定我明白你的意思但是......让我们不要让它阻止我们。您希望从输入中获取特定节点的内容。你的第一个XPath声明:
/wcm:root/wcm:element
正在提取名称为wcm:element
的每个元素,该元素是作为根元素的wcm:root
元素的子元素。
你的第二个:
/wcm:root/wcm:element/Body
类似,但会查找名为Body
的元素,这些元素是wcm:element
的子元素。
您需要获取wcm:element
元素的值,其中属性name
设置为值Body
。您可以通过在XPath前面添加@
符号来表示属性,并使用[...]
表示 where 条件 - 谓词。你需要XPath语句:
/wcm:root/wcm:element[@name = 'Body']
我假设您的XPath执行环境很好的名称空间前缀(wcm),因为您说您的第一个查询返回了内容。