2016-10-28 6 views
0

Я пытаюсь получить текст между "" (info.net, test.com и т. Д.) ниже списка с jsoup и добавить их в arraylist.JSoup не анализирует элементы

<?xml version="1.0" encoding="UTF-8"?> 
<supported-filehosts> 
<host url="info.net"/> 
<host url="test.com"/> 
<host url="app.to"/> 
</supported-filehosts> 

Кажется легко, но я не могу получить его прямо с кодом ниже:

Document doc = Jsoup.parse(HOSTS); 
Elements links = doc.select("host[url]"); 

for (Element link : links) { 
    hostUrls.add(link.text()); 
} 

Может кто-нибудь посмотреть.

ответ

0

Вы должен получить attribute от каждого тега:

hostUrls.add(link.attr("url")); 

Пример код:

public class Main { 

    public static void main(String[] args) throws IOException { 


     final String HOSTS = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ 
      "<supported-filehosts>"+ 
      "<host url=\"info.net\"/>"+ 
      "<host url=\"test.com\"/>"+ 
      "<host url=\"app.to\"/>"+ 
      "</supported-filehosts>"; 
     List<String> hostUrls = new ArrayList<String>(); 

     Document doc = Jsoup.parse(HOSTS); 
     Elements links = doc.select("host[url]"); 
     for (Element link : links) { 
      hostUrls.add(link.attr("url")); 
     } 
     System.out.println(hostUrls.toString()); 
    } 
} 

Выход:

[info.net, test.com, приложение. до]

+0

Hi TDG, thx для ответа, но неудачно hostUrls по-прежнему пуст – Simon

+0

Я добавил полный код **, который работает для меня. – TDG

+0

Странно, теперь я даю ссылку на синтаксический анализ напрямую (документ doc = Jsoup.parse («http://test.org/filehosts.xml»); все равно ничего – Simon

Смежные вопросы