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)

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top