2010-11-26 3 views
6

So versuche ich einige der WootAPI mit XPath zu analysieren. Ein Problem, auf das ich stoße, ist, dass ein paar der Elemente Doppelpunkte in ihrem Namen haben, wie woot:price oder woot:condition. Nun, versuchen, den XPath //rss/channel/item/woot:price zu verwenden, wird nicht den Inhalt des Elements woot:price wegen des Doppelpunkts greifen, denke ich. Was kann ich tun, um es trotzdem zu bekommen?Verwenden Sie XPath, um den Elementnamen mit einem Doppelpunkt zu analysieren

Antwort

10

Die Doppelpunkte sind, weil die Elemente ein Namespace-Präfix haben und an den Woot-Namespace gebunden sind.

Sie sollten auf XML namespaces and how they affect XPATH and XSLT nachlesen.

Wenn Sie die Woot Elemente in Ihrem XPath verweisen möchten, werden Sie entweder müssen:

  1. den Namespace Woot Deklarieren http://www.woot.com/ so dass, wenn Sie verwenden, dass Namespacepräfix in Ihrem XPath wird es selbstverständlich sein.
  2. Verwenden Sie eine allgemeinere XPATH-Anweisung, die Prädikatfilter verwendet, die local-name() und namespace-uri() verwenden, um das Element abzugleichen.
    • //rss/channel/item/*[local-name()='price' and namespace-uri()='http://www.woot.com/']
+0

1. wissen, wie das in Java zu tun? 2. Ich habe versucht, das von Ihnen angegebene Beispiel zu verwenden, und es hat nicht funktioniert. : \ – Chiggins

+0

Ich hatte einen Fehler in der XPATH, die ich zur Verfügung gestellt hatte (es fehlte das "h" im woot namespace uri und hatte nicht die schließende Klammer). Ich habe es aktualisiert. Wiederholen. –

+0

Ah, scheinest du das Beispiel in 2 zu beheben, funktioniert wie Magie. :) – Chiggins

Verwandte Themen