Java - 无法从Elements转换为String

时间:2014-07-19 17:56:14

标签: java string jsoup elements

我有一个问题,我现在花了很长时间试图修复和搜索解决方案,但无济于事。所以我希望你们能够理解我想要实现的目标并提出一些建议吗?

基本上,我试图编写一个允许用户输入单词的程序,程序将转到dictionary.reference.com,搜索单词,然后检索.mp3超链接(或打开它)并允许用户听取单词的发音方式。所以基本上它是一个单词发音程序。

我的代码仍然处于非常早期阶段,但我的粗略想法是我会有一个GUI来输入单词,所以不要介意调试固定变量(例如searchWord)。

以下代码:

import java.net.*;
import java.io.*;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;


public class Pronun {
     String searchWord = "development"; // Fixed variable for debugging
     Element audio; 

     public Pronun() throws Exception {
         // As program is ran, begin searching the word in the dictionary.
         URL makeSearch = new URL("http://dictionary.reference.com/browse/"+searchWord+"?s=t");
         URLConnection connectTo = makeSearch.openConnection();
         BufferedReader in = new BufferedReader(new InputStreamReader(connectTo.getInputStream()));

         String inputLine;
         while ((inputLine = in.readLine()) != null) 
             System.out.println(inputLine);
             File input = new File("output.txt");
             Document doc = Jsoup.parse(input, "UTF-8");
             Element audio = doc.select("audspk.classname").first();

             // Write the hyperlink to the file "output.txt".
             PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("output.txt", true))); 
             out.println(audio);
             out.close();           
         in.close();


    }
}

我试图从页面中检索的超链接是:

<a class="audspk" href="http://static.sfdict.com/dictstatic/dictionary/audio/luna/D02/D0238600.mp3">

正如你所看到的,我试图通过Jsoup,使用它的类名 - &#34; audspk&#34;。

但基本上,当我运行代码时,这就是我收到的错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from Elements to String

     at URLConnectionReader.main(URLConnectionReader.java:25)

我试图通过toString转换它,但这似乎也不起作用,但我必须在那里做错事,所以对此的任何帮助都会受到赞赏。我希望你能理解我在这里想要达到的目标。

1 个答案:

答案 0 :(得分:1)

我有几点意见:

  1. 文件output.txt似乎是空的,因为你没有写任何内容。
  2. 如果您要打印链接,请使用attr的方法Element

    String link = doc.select(".audspk").first().attr("href");
    
  3. jsoup可以自行下载并解析URL

    URL makeSearch = new URL("http://dictionary.reference.com/browse/" + searchWord + "?s=t");
    Document doc = Jsoup.parse(makeSearch, 1000);
    String link = doc.select(".audspk").first().attr("href");
    System.out.println(link);