XPath i ignorowanie błędnych elementów/artybutów

0

Witam,

próbuje pobrać dane z pewnej strony, która rzekomo jest w formacie xml: http://m.meteoprog.pl/pl/weather/Warszawa
Wartością jaką chce pobrać jest aktualna temperatura, ścieżka XPath prowadząca do niej wygląda następująco:

/html/body/div/div[3]/div/div[2]/div/div/div[3]

Problem jednak polega na tym, że program po skompilowaniu wyrzuca błąd:

[Fatal Error] 86: Attribute "class" was already specified for element "input".
org.xml.sax.SAXParseException; lineNumber: 30; columnNumber: 86; Attribute "class" was already specified for element "input".

co świadczy o tym, że jeden z elementów <input /> ma zdublowany atrybut class.
I rzeczywiście gdy spojrzymy w kod stron, to znajdziemy takie miejsce.

Jednak w gruncie rzeczy błąd ten nie ma żadnego wpływu na wartość która chce pobrać, jednak w żaden sposób nie mogę zmusić klasy XPath, aby ignorowała tę nieścisłość. Czy ktoś wie w jaki sposób to zrobić?

1

Trochę stare, ale niech będzie dla potomnych...
Po pierwsze koszmarna ścieżka. Jakakolwiek drobna zmiana układu strony i całe adresowanie leci w pieruny.
Poprawna i najkrótsza ścieżka jest taka: //div[@class='temp'] lub np. //div[@class='today']//div[@class='temp'] jeżeli chcemy mieć pewność, że chodzi o aktualną temperaturę.
Najlepiej oczywiście zakotwiczać się do najbliższego elementu (najlepiej rodzica) mającego zdefiniowany atrybut id ponieważ tylko id ma gwarancję unikalności w całej stronie. Na podanej stronie nie ma jednak takiej możliwości ponieważ id posiadają tylko (zapewne niesamowicie ważne) bannery. ;)
Użycie poprawnej ścieżki najprawdopodobniej usunie problemy z adresowaniem, które mogą być wynikiem jakiegoś zapomnianego, bardzo rzadkiego buga w parsowaniu xpath.

1 użytkowników online, w tym zalogowanych: 0, gości: 1