所以我正在学习 android,我正在尝试解析来自以下网站的数据:
http://www.brimfieldfleafinder.com/dealersservc.php
我不确定这是什么格式。它似乎是 XML 但与其他东西混合?我尝试使用 XMLParser 和 org.xml.sax 解析器将它解析为 XML,但我遇到了两个问题:
当我尝试使用以下代码中的
getUrlString()
方法从指定的 URL 下载字符串形式的数据并使用 logcat 或 toast 将其可视化时,我只是在菱形中得到一堆问号字符。public byte[] getUrlBytes(String website) throws IOException { URL url = new URL(website); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); try { ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream in = connection.getInputStream(); if (connection.getResponseCode() != connection.HTTP_OK) { throw new IOException(connection.getResponseMessage()); } int bytesRead = 0; byte[] buffer = new byte[1024]; while ((bytesRead = in.read()) > 0) { out.write(buffer, 0, bytesRead); } out.close(); return out.toByteArray(); } finally { connection.disconnect(); } } public String getUrlString(String website) throws IOException { return new String(getUrlBytes(website)); }
我遇到的另一个问题是,当我尝试将结果解析为 XML 时,我收到一条错误消息,指出它不是有效的 xml。我想这些问号毕竟不是有效的 XML,但我已经尝试通过 XML validator 运行上面的 URL,但仍然说它不是有效的 XML。
再一次,这是什么类型的数据,我该如何解析它?
最佳答案
试试 Jsoup .
下面是从页面获取数据的例子
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class ExtractInfo {
public static void main (String [] args) throws IOException{
Document doc = Jsoup.connect("http://www.brimfieldfleafinder.com/dealersservc.php").get(); //get the page
Elements dealersList = doc.select("dealer"); // select all dealer tags
for (Element dealer : dealersList){
Elements dealerInfos = dealer.children(); // for each dealer tag select all child tags
for(Element inf : dealerInfos){
System.out.println(inf.tagName() +" : "+ inf.text()); //print tag name and if exists tag text
}
System.out.println("********************************");
}
}
}
关于java - 从php页面解析数据到android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38888291/