2016-08-17 1 views
0

Entschuldigung für die schlechte Erklärung, da ich kein Code-Experte bin.XPath Seperator/Divider

Im eine Information zu extrahieren, die in Tabellen wie dieser layd geführt wird: enter image description here

Ich brauche jede Tabelle zum Beispiel von Consumer-Buy-to-let-Business-Tabelle i folgendes muß extrahieren: Consumer Buy-to-let Arrangeur, Consumer buy-to-let-Berater

Mein aktueller XPath, die diese Informationen extrahiert, aber ohne Komma wie folgt aussieht:

//*/text()[normalize-space(.)='Consumer buy-to-let Business']/parent::*/parent::*/p 

Ou tput:

Consumer buy-to-let arrangerConsumer buy-to-let advisor 

Ich bin schwer zu finden, wie Sie das Komma als Trennzeichen hinzufügen.

Antwort

1

für Lesbarkeit Wrapped:

string-join(
    //text()[normalize-space(.)='Consumer buy-to-let Business']/ancestor::*[2]/p, ',' 
) 

Siehe auch: fn:string-join.

Beachten Sie, dass

  • /parent::*/parent::* ist kürzer, wenn sie als /ancestor::*[2]
  • Textknoten geschrieben werden, müssen immer Kinder eines Elements sein, so ist //*/text() die gleiche wie //text()

Related reading: Is it possible to apply normalize-space to all nodes XPath expression finds?

+0

Leider hat es nicht für mich funktioniert, ich habe es eingegeben als: string-join (// text() [normalize-space (.) = 'Verbraucher kaufen-zu-vermieten Business']/ancestor :: * [2]/p, ',') Ich benutze import.io zu Test, aber es bringt keine Ergebnisse. Ich habe nur eine Zeile, um den XPath einzugeben – Tomas

+0

Der relevante Teil meiner Antwort ist 'string-join (someNodes, 'separator')'. Wenn mein Pfad nichts zurückgibt, benutze deinen. Wenn das nicht funktioniert, machen Sie einen Kreuzvergleich mit 'string-join (('foo', 'bar'), '.')'. Wenn * that * 'foo.bar' nicht zurückgibt, dann stimmt etwas nicht damit, wie Ihre Anwendung XPath-Ausdrücke auswertet. – Tomalak