从XML文件中提取特定节点

时间:2013-10-22 11:34:34

标签: ruby xml node.js xpath

我想使用Ruby

中的doc.xpath从XML文件中仅提取body节点/标记

要从XML文件中提取的节点:

<wcm:element name="Body">&lt;p&gt;A new study suggests that &lt;a href="ssNODELINK/SmokingAndCancer"&gt;tobacco&lt;/a&gt; companies may be using online video portals, such as YouTube, to get around advertising restrictions and market their products to young people.&lt;/p&gt;
</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文件的正文部分?

1 个答案:

答案 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),因为您说您的第一个查询返回了内容。