Ruby 从XML文件中提取特定节点
我只想在Ruby中使用doc.xpath从XML文件中提取body节点/标记 要从XML文件中提取的节点:Ruby 从XML文件中提取特定节点,ruby,xml,node.js,xpath,Ruby,Xml,Node.js,Xpath,我只想在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,
<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/Body")
但是不起作用
有人对如何在Ruby中使用doc.xpath精确提取XML文件的正文部分有什么建议吗?我不是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)是良好的,因为您说您的第一个查询返回了内容
wcm:element
元素是否是wcm:root
元素的直接子元素?如果没有,请尝试/wcm:root//wcm:element[@name='Body']
。/
意味着XPath遵循子体轴并向下查看文档树到任何级别。如果可以,发布更多的XML怎么样?此外,您可能需要声明正在使用的名称空间。
page_content = doc.xpath("/wcm:root/wcm:element/Body")