java - 从php页面解析数据到android

标签 java php android xml parsing

所以我正在学习 android,我正在尝试解析来自以下网站的数据:

http://www.brimfieldfleafinder.com/dealersservc.php

我不确定这是什么格式。它似乎是 XML 但与其他东西混合?我尝试使用 XMLParser 和 org.xml.sax 解析器将它解析为 XML,但我遇到了两个问题:

  1. 当我尝试使用以下代码中的 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));
    }
    
  2. 我遇到的另一个问题是,当我尝试将结果解析为 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/

相关文章:

java - mouseMoved 事件似乎只被调用一次

php - 以 dd/mm/yyyy 格式指定日期时,strtotime() 不返回正确的值

android - 使用 firebase 在无尽的回收器 View 中分页

android - 在 fragment 中动态转换类类型

java - 如何从java执行https GET请求

单独类中的 Java KeyListener

php - 获得前 6 件元素

Android:在任务 Activity 上覆盖窗口

Java:使用 String.indexOf() 检查撇号字符

php - 使用 <button> 增加库存