2010-01-06 7 views
4

J'ai stocké le code HTML d'une page Web dans la base de données.est-il possible de charger un HtmlPage à partir d'une chaîne?

Je veux profiter de la capacité de HtmlUnit pour trouver/référencer des éléments DOM.

Est-il possible de charger l'objet HtmlPage à partir d'une chaîne (via une colonne de base de données)?

+0

juste pour l'intérêt: pourquoi persistez-vous à remplir des pages html complètes en tant que chaînes dans la base de données? pourquoi ne pas simplement stocker en tant que simple fichier sur le système de fichiers? –

Répondre

8

StringWebResponse peut aider.

Edit: exemple:

URL url = new URL("http://www.example.com"); 
    StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url); 
    HtmlPage page = HTMLParser.parseHtml(response, new TopLevelWindow("top", new WebClient())); 
    System.out.println(page.getTitleText()); 
+0

pouvez-vous aider avec le code s'il vous plaît? HtmlPage page = new HtmlPage (????); – mrblah

+0

ah ok, super qui a fonctionné parfait! – mrblah

+1

Problème: le constructeur TopLevelWindow est protégé – lisak

0

uhhmm bien oui.

Vous avez juste besoin de le servir (si vous utilisez Java, vous pouvez utiliser Tomcat pour cela) et pointez votre test sur la page servie.

3

Je suppose que vous utilisez HtmlParser.parseHtml pour créer l'objet HtmlPage et juste besoin d'un WebResponse pour lui passer?

Si oui, StringWebResponse encapsulera votre chaîne afin que vous puissiez la passer directement à parseHtml.

+0

Je ne trouve pas HtmlParser dans HtmlUnit, faites-vous référence à une autre lib? – mrblah

+0

http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/html/HTMLParser.html#parseHtml%28com.gargoylesoftware.htmlunit.WebResponse,%20com.gargoylesoftware.htmlunit.WebWindow%29 –

+1

Le problème est que TopLevelWindow le constructeur est protégé – lisak