Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   .NET-Framework (managed code) (https://www.delphipraxis.net/79-net-framework-managed-code/)
-   -   XPath funktioniert nicht (https://www.delphipraxis.net/168346-xpath-funktioniert-nicht.html)

xaromz 16. Mai 2012 12:49

XPath funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bin gerade dabei, einen semantischen Parser für Webseiten zu bauen. Zum Test habe ich einen Seite der Delphi-PRAXiS genommen, um sie zu analysieren. Beim Herumspielen ist mir aufgefallen, dass ich den Container, in dem sich die Postings befinden, nicht per XPath finden kann. Mein Query "//div[@id='posts']" gibt mir ein leeres Ergebnis, während "//*[@id='posts']" funktioniert. Kann mir das einer erklären?
Code:
var settings = new XmlReaderSettings {DtdProcessing = DtdProcessing.Ignore, XmlResolver = null};
var xmlReader = XmlReader.Create(File.OpenRead("test.html.xml"), settings);
var xmlDoc = new XmlDocument();
xmlDoc.Load(xmlReader);
var nodes = xmlDoc.DocumentElement.SelectNodes("//div[@id='posts']"); // Liste ist leer
//var nodes = xmlDoc.DocumentElement.SelectNodes("//*[@id='posts']"); // Element wird gefunden
Gruß
xaromz

shmia 16. Mai 2012 13:33

AW: XPath funktioniert nicht
 
Also der XPath-Ausdruck //div[@id='posts'] findet bei mir genau ein Element in der Testdatei.
Getestet mit Altova XML-Spy.
Ebenso wie bei //*[@id='posts'].

Also muss dein Parser einen Bug haben.
MSXML 6.0 installiert?
MSXML 4.0 SP3 installiert?

xaromz 16. Mai 2012 13:41

AW: XPath funktioniert nicht
 
Hallo,

dass der Ausdruck stimmt ist klar. Meine Frage ist, warum er nicht funktioniert bzw. ob ich mit einem anderen Ausdruck zum selben Ergebnis komme.
MSXML in Version 6 ist ja bei Win7 dabei, ich habe aktuell MSXML6 SP3 und MSXML4 SP3 installiert.

Gruß
xaromz

shmia 16. Mai 2012 14:14

AW: XPath funktioniert nicht
 
Zitat:

Zitat von xaromz (Beitrag 1166801)
dass der Ausdruck stimmt ist klar

Klar ist es erst dann, wenn man einen unabhängigen Beweis hat. (um den Tomaten-Auf-Den-Augen-Effekt zu vermeiden)

Die Frage ist nun: stützt sich die Klasse XmlDocument auf die MSXML Biblitotheken oder handelt es sich komplett um managed Code?
Welches .NET Framework wird benützt?
Und natürlich sollte man auch prüfen, ob auch alle Updates für das .NET Framework installiert sind.

xaromz 16. Mai 2012 18:52

AW: XPath funktioniert nicht
 
Hallo,

Zitat:

Zitat von shmia (Beitrag 1166807)
Zitat:

Zitat von xaromz (Beitrag 1166801)
dass der Ausdruck stimmt ist klar

Klar ist es erst dann, wenn man einen unabhängigen Beweis hat. (um den Tomaten-Auf-Den-Augen-Effekt zu vermeiden)

Das ist mir schon klar. Aber erstens ist der Ausdruck so einfach, da kann man gar keinen Fehler machen, und zweitens habe ich den Ausdruck natürlich in einem anderen Programm ausprobiert. Ich bin ja nicht blöd:wink:.

Zitat:

Zitat von shmia (Beitrag 1166807)
Die Frage ist nun: stützt sich die Klasse XmlDocument auf die MSXML Biblitotheken oder handelt es sich komplett um managed Code?
Welches .NET Framework wird benützt?
Und natürlich sollte man auch prüfen, ob auch alle Updates für das .NET Framework installiert sind.

Ob .Net das selbst macht oder nicht habe ich nicht überprüft, Updates sind alle installiert.

Inzwischen habe ich das Problem gefunden, es gibt einen Knoten
Code:
<a name="poststop" id="poststop"></a>
Ist dieser vorhanden, läuft mein Query ins Leere, ohne funktioniert es. Warum kann ich aber nicht sagen. Ich behelfe mir erstmal damit, Links ohne Referenz zu löschen, bevor ich ans Analysieren gehe (die brauche ich eh nicht).

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz