XPath Auswahlknoten mit Perioden
Frage
Ich habe ein XML-Dokument, in dem einige der Knoten einen .
in ihrem Namen haben:
<com.site.blah>
<id>asdkjasd</id>
<com.site.testing>
<name>test</name>
</com.site.testing>
</com.site.blah>
Wenn ich @doc.search("/*/id").first.xpath
versuchen, es gibt /com.site.blah/id
, aber wenn ich dann tun. @doc.search("/com.site.blah/id").first.inspect
es gibt nil
Ich möchte in der Lage sein, eine XPath-Abfrage, um den Namen, unter com.site.testing
zu wählen, aber es hält meine Anfragen ablehnen.
Irgendwelche Ideen?
(I hpricot verwenden, wenn es einen Unterschied macht)
Lösung
Ihre XPath-Bibliothek ist gebrochen. Ein XPath-Name-Test ist ein QName ( http://www.w3.org/TR/ XPath / # NT-Nametest ), die nach dem kaninchenbau von EBNF folgenden umfasst Perioden ( http://www.w3.org/TR/REC-xml/#NT-NameChar ). Melden Sie den Fehler an die Entwickler.
Als Abhilfe kann weder die Fluchtmechanismen in den Kommentaren erwähnt sind Teil von XPath, aber Sie können mit einem Prädikat versuchen die Elementnamen zu überprüfen, etwa so:
/*[name(.) = 'com.site.blah']/id