Я искал способ найти узлы элементов с определенным атрибутом и найденным: «Use Nokogiri to get all nodes in an element that contain a specific attribute name»Как получить узлы с определенным атрибутом, который содержит двоеточие?
Однако, он не работает, когда атрибут имеет двоеточие, например «Foo: бар», как в
<abc foo:bar="hello"></abc>
(да, его действительный).
Однако, когда я использую:
elements = @doc.xpath("//*[@foo:bar]")
я получаю:
unexpected ':' after '#<Nokogiri::CSS::Node:0x107458870>' (Nokogiri::CSS::SyntaxError)
И, когда я использую:
elements = @doc.xpath("//*[@foo\\:bar]")
я получаю:
Invalid predicate: //*[@foo\:bar] (Nokogiri::XML::XPath::SyntaxError)
Есть ли у кого-нибудь предложения?
$ nokogiri -v
# Nokogiri (1.5.6)
---
nokogiri: 1.5.6
warnings: []
ruby:
version: 1.8.7
engine: mri
description: ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
platform: universal-darwin11.0
libxml:
loaded: 2.7.3
compiled: 2.7.3
binding: extension
Эти старые версии?
Какую версию Ruby, Nokogiri и LibXML вы используете? Введите 'nokogiri -v' в командной строке и добавьте эту информацию в свой вопрос, отредактировав ее. –
Это не атрибут с двоеточием, это пространство имен. Если пространство имен не зарегистрировано на корневом узле, вам необходимо зарегистрировать его самостоятельно. –