Ich versuche, eine Funktion in einem XPath-Ausdruck zu verwenden:XPath SelectSingleNode mit Funktionsnutzung
substring-before(//span[@class='TextH3 LayoutSmallRow'], "PPAPI")
Der C# -Code, die den Ausdruck wie folgt aussieht verarbeitet:
HtmlWeb Web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument HtmlDoc = new HtmlAgilityPack.HtmlDocument();
HtmlNode PageNode = null;
HtmlDoc = Web.Load(tbUpdateCheckURL.Text);
PageNode = HtmlDoc.DocumentNode.SelectSingleNode(tbUpdatePattern.Text);
Aber dies führt zu eine Ausnahme: "Der Ausdruck muss zu einem Knoten führen"
Es klingt für mich wie die Ausgabe von substring-before
kann nicht in eine HtmlNode
"übersetzt" werden Art. Was natürlich logisch ist. Also meine Frage ist, wie man einen XPath-Ausdruck verarbeitet, der Funktionen verwenden kann?
Beantwortet Ihre Frage nicht direkt, aber ... haben Sie CsQuery ausprobiert? https://github.com/jamietre/CsQuery Ich fand HtmlAgilityPack viel schwieriger zu verwenden als dies. In Bezug auf Ihre Frage wäre es hilfreich, wenn Sie eine XML-Beispieldatei bereitstellen, mit der Sie diesen Code ausführen. – Neolisk
Sie suchen also nach einem Datentyp, der das Ergebnis einer beliebigen xpath Ausdruck Auswertung enthalten kann, ist das richtig? (Das heißt, Sie wissen nicht, ob Sie einen Skalar, einen Knoten oder einen Knotensatz zurückbekommen) – AakashM
Leider kann ich das inspizierte Dokument nicht hinzufügen. Da es eine Webseite ist und nicht meine. @AakashM Ja das ist irgendwie. Aber ich kann 'Object' nicht verwenden, da es eine Ausnahme auslöst, bevor etwas zurückgegeben wird. –