![]() |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 05.11.2008
Fachbeiträge: 245
Abgegebene Danke: 3
Erhielt 16 Danke für 16 Beiträge
|
Hi zusammen
,ich probiere gerade eine HTML Datei runterzuladen und per XML bestimmte Informationen heraus zubekommen und meine nerven werden dabei durch die XPath API sehr stark strapaziert. Hab mir zum Testen und rausbekommen des XPath das FireBug Plugin FirePath installiert das gute Stück funktioniert auch einwandfrei. Nehme ich allerdings die selbe XPath Anweisung in Java kommt nichts dabei raus. Beispiel: Die Webseite könnte wie folgt aussehen: Code:
<html>
<head>
</head>
<body>
<div>
<div id="content"><h4></h4><div></div></div>
</div>
</body>
</html>
Beispiel für eine XPath abfrage: Code:
//*[@id='content'] Code:
//div[@id='content'] Code:
//*[@id='content']/div Ich hoffe ihr könnt mir auf die Sprünge helfen :/ Vielen Dank schonmal! |
|
|
|
| #2 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 02.07.2009
Fachbeiträge: 5.349
Blog-Einträge: 1
Abgegebene Danke: 12
Erhielt 1.061 Danke für 1.053 Beiträge
|
Zeige doch mal auf wie du es in Java versuchst. Bei mir gehen auch die beiden von dir geposteten Ausdrücke in Java....
__________________
Gruß Basti |
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 05.11.2008
Fachbeiträge: 245
Abgegebene Danke: 3
Erhielt 16 Danke für 16 Beiträge
|
Ok, habe mir das ganze jetzt nochmal in einem kleinen Testprojekt angeschaut und festgestellt, dass der XPath so funktioniert. Was mich dazu bringt, dass das worauf der XPath laufen soll nicht stimmig ist.
Den Code zum Downloaden und einlesen habe ich allerdings nicht selbst geschrieben und habe jetzt probiert ihn neu zu implementieren, allerdings scheitere ich immer wieder daran, dass beim Wandeln des Inputs in ein Document oder Node eine Fehlermeldung wie folgt ausgegeben wird: "org.xml.sax.SAXParseExceptionpublicId: -//W3C//DTD HTML 4.01 Transitional//EN; systemId: http://www.w3.org/TR/html4/loose.dtd; lineNumber: 31; columnNumber: 3; Deklaration für Entität "HTML.Version" muss mit ">" enden." Habe schon verschiedene möglichkeiten ausprobiert und komme eigentlich immer wieder auf diesen Fehler. Der Fehler wird zwar in der Konsole als Schwerwiegend bezeichnet, allerdings wird die Webseite im Browser ohne Probleme angezeigt, daher kann er ja schonmal nicht ganz so Schwerwiegend sein. Auf den HTML Code hab ich allerdings keinen Zugriff kann man beim konvertieren nicht einfach irgendwie die Fehler ignorieren? Oder muss ich mir ne andere Bibliothek holen? Vielen Dank schonmal! Viele Grüße! |
|
|
|
| #4 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 12.07.2010
Fachbeiträge: 3.755
Abgegebene Danke: 158
Erhielt 440 Danke für 429 Beiträge
|
Hi,
Du meist unterschieden zwischen html und XML.. HTML ist zwar in XML Notation geschrieben ist aber bei den seltensten Homepages wirklich wohl geformt.. Der Browser kann diese Fehler überlesen korrigieren oder ähnliches. Der Sa Parser erwartet aber eine vollständig korrekte XML Datei..
__________________
Wie man Fragen richtig stellt. Bei jedem Thread kommt nach einer völlig absurden Fehlerbeschreibung ein "habs gelöst" mit einer teils noch absurderen Lösung. (timbeau) |
|
|
|
| #5 (permalink) | |
|
Neuer Benutzer
byte
Registriert seit: 03.05.2012
Fachbeiträge: 10
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hi!
ich habe Probleme mit dem FF auf Map-areas zuzugreifen und zu testen(click) html: <map name="clickareas" id="clickareas"> <area alt=11 ... <area alt=12 ... <area alt=13 ... </map> Zahlreiche Versuche wie ff.findElement(By.xpath("//area[@alt=12]")).click(); haben nichts gebracht. wer hat Ideen?? |
|
|
|
| #6 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 25.12.2011
Fachbeiträge: 180
Abgegebene Danke: 12
Erhielt 14 Danke für 14 Beiträge
|
Deine Ausgangsstruktur ist kein valides XML, deswegen greift der XPath nicht.
Laut XML-Spezifikation müssen attribute gequoted werden (entweder mit " oder in Fällen wo der Wert selbst " enthält mit '). Diese Einschränkung ist in HTML nicht zwingend. Deswegen hast du hier genau den Fall erwischt, wo du auf einem durchaus validen HTML-Dokument nicht mit einem XPath arbeiten kannst. ![]() Zum Testen von XPath verwende ich meist: Allans Online XPath Tester (@Admins: Sorry, falls linken nicht erlaubt sein sollte) |
|
|
|
| #7 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Megabyte
Registriert seit: 08.12.2006
Fachbeiträge: 1.465
Abgegebene Danke: 0
Erhielt 248 Danke für 237 Beiträge
|
XPath Visualizer
__________________
Death by stereo! |
||||||||||||||||||
|
|
|
||||||||||||||||||
| #8 (permalink) | |
|
Neuer Benutzer
byte
Registriert seit: 03.05.2012
Fachbeiträge: 10
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
DerFeivel hat es erfasst gehabt. Danke!
also... das ist wirklich kein reguläres xml. Für die Nachwelt der Versuch einer kleinen Beschreibung. Praktisch liegen in meinem Fall alle Elemente übereinander und werden irgendwie später mit coords versetzt, was natürlich der Parser nicht erkennt. Darum habe ich auch egal bei welchem Inde immer dasselbe Element angesteuert... nämlich das, welches bis oben auf der "Liste" liegt. Glücklicherweise haben die graphischen Elemente ein Testfeld darüber, welche ich dann über das style-Attribute area.getAttribute("style") verglichen habe und das entsprechende area dann .clicken konnte
|
|
|
|
| #9 (permalink) | |
|
Neuer Benutzer
byte
Registriert seit: 03.05.2012
Fachbeiträge: 10
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hi,
ich nochmal... gibt es die Möglichkeit ein nicht regulären Ausdruck(Auszug erste area) trotzdem abzufragen oder schlägt die Anfrage schon fehl? Verdeutlichung: html: <map name="clickareas" id="clickareas"> <area href="xxx.php?id=19" coords="110,95,132,80,132,81,160,82,179,96,179,151,158,163,128,163,109,150" shape="poly" alt="raise <span class="level">Stufe 2</span>||Ausbau <br /> </div>"> <area alt=... <area alt=... </map> Ansatz: mit dem alt-attribut arbeiten ich schaffe es die href in eine Liste zu legen oder auch zu vergleichen ? wie rufe ich aber die url auf ohne .click() ? ? mit Bedingung: rufe url welche(alt='rai%') hat! (vergleiche die ersten 3Char) (String.equal() funktioniert ja dann, wenn ich schon auf einfache datentypen runter reisen muss...) |
|
|
|
| #10 (permalink) | |
|
Neuer Benutzer
byte
Registriert seit: 03.05.2012
Fachbeiträge: 10
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Ich bin noch ne Antwort schuldig...
also es war von Anfang an richtig... Problem war, dass die Elemente alle übereinander lagen. Darum habe ich immer dasselbe erhalten. Wie und warum weiß ich nicht mehr, aber gelöst habe ich das ganze indem ich das Textfeld, das über jedem Element liegt ausgewählt habe. damit habe ich auf die richtige Position "klicken" können und es funktionierte. besten Dank an alle Antworten
|
|
|
|
| #11 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 17.08.2007
Fachbeiträge: 7.461
Abgegebene Danke: 70
Erhielt 566 Danke für 525 Beiträge
|
Wenn du HTML einlesen willst brauchst du einen sehr "Fehler toleranten" XML / HTML Parser wie z.B. jsoup Java HTML Parser, with best of DOM, CSS, and jquery oder JTidy - JTidy (wenn du einen Standard Java DOM haben willst).
__________________
Lycia: Listener principle based XML Processor http://code.google.com/p/lycia Apache Lightning: Fast Pojo-Serializer http://directmemory.apache.org/lightning Apache DirectMemory: BigMemory like in-memory cache http://directmemory.apache.org |
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Java als Programmiersprache für kommerzielle Spieleentwicklung? | Miikku | Spiele- und Multimedia-Programmierung | 3 | 11.11.2011 07:07 |
| java versionen problem | sirius76 | Java Basics - Anfänger-Themen | 20 | 26.08.2011 10:59 |
| Error outside Java Virtual Machine | uzi981 | Allgemeine Java-Themen | 26 | 24.01.2011 09:04 |
| Java lädt mit Firefox 3.5.5 nicht mehr! Windows 7 | 19_Dan_88 | Für Verirrte - Fragen zu JavaScript | 3 | 27.12.2009 23:18 |
| Lesezeichen |
|
|