2011-02-12 17 views
0

こんにちはすべて 私は、私はテキストが含まれている最初のタグを取得するHTML例外:クエリを解析できませんでした:containsOwn(テキスト)

を解析するためのjava-EEアプリでjsoup使用 としようとしたときにしています次のコードを実行するために、私は例外ました:

org.jsoup.select.Selector$SelectorParseException: Could not parse query :containsOwn(text) 
    at org.jsoup.select.Selector.findElements(Selector.java:143) 
    at org.jsoup.select.Selector.select(Selector.java:90) 
    at org.jsoup.select.Selector.select(Selector.java:68) 
    at org.jsoup.nodes.Element.select(Element.java:162) 

コードは次のとおりです。

String html = "<html><head><style type=\"text/css\"></style></head><body><div style=\"font-family:times new roman,new york,times,serif;font-size:14pt\">first text<br><div><br></div><div style=\"font-family: times new roman,new york,times,serif; font-size: 14pt;\"><br><div style=\"font-family: times new roman,new york,times,serif; font-size: 12pt;\"><font size=\"2\" face=\"Tahoma\"><hr size=\"1\"><b><span style=\"font-weight: bold;\">one:</span></b> second text<br><b><span style=\"font-weight: bold;\">two:</span></b> third text<br><b><span style=\"font-weight: bold;\">three:</span></b> fourth text<br><b><span style=\"font-weight: bold;\">five:</span></b> fifth text<br></font><br>"; 
     Document document = Jsoup.parse(html); 
     String firstText = document.select(":containsOwn(text)").first().text(); 
     System.out.println(firstText); 

ので、任意のアイデア?

答えて

1

ところで、あなたのHTMLがうまく形成されて見ていない、あなたはfirst text後に余分なdivを持っている: -

<div ...>first text<br><div><br></div> 

第二に、あなたはおそらくcontainsOwnは、特定のテキストを検索するためmatchesOwnを使用する必要があり、上のベースdocumentation

String html = "<html><head><style type=\"text/css\"></style></head><body><div style=\"font-family:times new roman,new york,times,serif;font-size:14pt\">first text<br><br></div><div style=\"font-family: times new roman,new york,times,serif; font-size: 14pt;\"><br><div style=\"font-family: times new roman,new york,times,serif; font-size: 12pt;\"><font size=\"2\" face=\"Tahoma\"><hr size=\"1\"><b><span style=\"font-weight: bold;\">one:</span></b> second text<br><b><span style=\"font-weight: bold;\">two:</span></b> third text<br><b><span style=\"font-weight: bold;\">three:</span></b> fourth text<br><b><span style=\"font-weight: bold;\">five:</span></b> fifth text<br></font><br>"; 
Document document = Jsoup.parse(html); 
String firstText = document.select("div:matchesOwn(\\w+)").first().text(); 
System.out.println(firstText); 

...と印刷された結果は次のとおりです。 - - :

これを試してみてくださいiは上記の例を調整したい場合は

first text 
+0

おかげで多くのことを、それは何を正常に動作しますが、最初のテキストを一般的に取得して、それが特定のタグ(つまり、ドキュメントの最初のテキストを取得する)であると判断しないようにするには、このdocument.select( ":matchesOwn(\\ w +)")のように動作します。 first()。text(); –

+0

はい、 'document.select(":matchesOwn(\\ w +) ")。first()。text();'もうまくいきます。私はちょうどそれをテストした。 – limc

+0

あなたのお手伝いができれば、最初の要素のHTMLコンテンツを正規表現ではなくテキストに一致させる方法がありますが、クイックフィードバックには感謝しています。

first text

関連する問題