Nokogiri 和按名称查找元素
我正在使用 Nokogiri 解析 XML 文件,其中包含以下代码片段:
doc.xpath('//root').each do |root|
puts "# ROOT found"
root.xpath('//page').each do |page|
puts "## PAGE found / #{page['id']} / #{page['name']} / #{page['width']} / #{page['height']}"
page.children.each do |content|
...
end
end
end
如何解析页面元素中的所有元素?共有三种不同的元素:图像、文本和视频。如何为每个元素制作案例陈述?
I am parsing an XML file using Nokogiri with the following snippet:
doc.xpath('//root').each do |root|
puts "# ROOT found"
root.xpath('//page').each do |page|
puts "## PAGE found / #{page['id']} / #{page['name']} / #{page['width']} / #{page['height']}"
page.children.each do |content|
...
end
end
end
How can I parse through all elements in the page element? There are three different elements: image, text and video. How can I make a case statement for each element?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
说实话,你看起来离我很近。。
Honestly, you look pretty close to me..
Nokogiri 的 CSS 和 XPath 访问器都允许指定多个标签,这对于解决此类问题非常有用。而不是遍历文档的
page
标记中的每个标记:这是使用 CSS 的搜索:
请注意,它按照 CSS 访问器指定的顺序返回标记。如果需要文档中标签的顺序,可以使用 XPath:
无论哪种情况,程序都应该运行得更快,因为所有搜索都发生在 libXML 中,仅返回 Ruby 处理所需的节点。
如果您需要将搜索限制在
标记内,您可以预先进行搜索以找到page
节点,然后在其下方搜索:或
Both Nokogiri's CSS and XPath accessors allow multiple tags to be specified, which can be useful for this sort of problem. Rather than walk through every tag in the document's
page
tag:This is a search using CSS:
Notice it returns the tags in the order that the CSS accessor specifies it. If you need the order of the tags in the document, you can use XPath:
In either case, the program should run faster because all the searching occurs in libXML, returning only the nodes you need for Ruby's processing.
If you need to restrict the search to within a
<page>
tag you can do a search up front to find thepage
node, then search underneath it:or