用Java解析HTML到Hashmap

用Java解析HTML到Hashmap,java,Java,我正在尝试用google voice api制作一个java应用程序,以及一个获取SMS数据和Convas返回整个html页面的方法,如下所示 我编写了一个SMSMessage类,它将HTML作为字符串接收,并将解析标记之间的第一条消息数据,但它使用arrayList而不是Hashmap package gv; import java.util.*; import java.util.regex.*; public class SMSMessage { protected Strin

我正在尝试用google voice api制作一个java应用程序,以及一个获取SMS数据和Convas返回整个html页面的方法,如下所示

我编写了一个SMSMessage类,它将HTML作为字符串接收,并将解析标记之间的第一条消息数据,但它使用arrayList而不是Hashmap

package gv;
import java.util.*;
import java.util.regex.*;

public class SMSMessage {

   protected String id;
   protected String phoneNumber;
   protected String displayNumber;
   protected String message;
   protected String startTime;
   protected String displayStartDateTime;
   protected boolean isRead;
   protected String messageText;

public SMSMessage(String x){

    parse(TruncateFirstMessage(x));
    parseresponse(x);

}
    public String TruncateFirstMessage(String xml){

       int firstbracket = xml.indexOf("{");
       //int secondbracket = xml.indexOf("{", firstbracket - 1);
       int thirdbracket = xml.indexOf("}");
       int fourthbracket = xml.indexOf("}", thirdbracket - 1);
        return xml.substring(firstbracket, fourthbracket);   
    }
    private void parseresponse(String init){
        String trimmeds1 = init.substring(init.indexOf("<html><![CDATA[)"));
        String trimmeds2 = init.substring(trimmeds1.indexOf(phoneNumber));
        Scanner s = new Scanner(trimmeds1);




    }

    private  void parse(String init){

        Scanner s = new Scanner(init);
        ArrayList<String> parsed = new ArrayList<String>();
        s.useDelimiter("[},:{]");
        String temp1 = "";
        int count = 0;
            while (s.hasNext()){

              String n = s.next();
                if (!n.equals("")){
                     count++;
                    String removequotes = n.replace("\"", "");


                      parsed.add(removequotes);  }
                }
            id = parsed.get(3);
            phoneNumber = parsed.get(5);
            displayNumber = parsed.get(7);
            startTime = parsed.get(9);
            displayStartDateTime = parsed.get(11) + ":" + parsed.get(12);
            isRead = Boolean.parseBoolean(parsed.get(21));
            messageText = parsed.get(29);

          }

    public String toString(){

        return getClass().getSimpleName() + " [ " + "id = " + id + ", phoneNumber = " + phoneNumber + ", isRead = " + isRead + ", messageText = " + messageText + ", displayStartDateTime = " + displayStartDateTime + " ]";

    }
}
包装gv;
导入java.util.*;
导入java.util.regex.*;
公共类短信{
受保护的字符串id;
受保护的字符串电话号码;
受保护的字符串显示编号;
受保护的字符串消息;
受保护字符串起始时间;
受保护的字符串displayStartDateTime;
受保护的布尔数据读取;
受保护的字符串消息文本;
公共SMSMessage(字符串x){
解析(TruncateFirstMessage(x));
解析响应(x);
}
公共字符串TruncateFirstMessage(字符串xml){
int firstbracket=xml.indexOf(“{”);
//int secondbracket=xml.indexOf(“{”,firstbracket-1);
int thirdbracket=xml.indexOf(“}”);
int fourthbracket=xml.indexOf(“}”,第三个支架-1);
返回xml.substring(第一个括号,第四个括号);
}
私有void解析响应(字符串初始化){
String trimmeds1=init.substring(init.indexOf(“这很可爱

首先,它不是HTML,而是XML

其次,您需要的数据是JSON格式的

因此,您有一个包含JSON数据的XML负载

您应该做的是去掉XML标记,留下完整的JSON负载。然后通过internet上可用的众多JSON解析器之一运行JSON负载。您也可以使用XML解析器完成此任务,但它足够简单,您可能不需要学习其中一个工具箱

JSON解析器快速且易于使用,可以为您提供所需的内容。

这很好

首先,它不是HTML,而是XML

其次,您需要的数据是JSON格式的

因此,您有一个包含JSON数据的XML负载

您应该做的是去掉XML标记,留下完整的JSON负载。然后通过internet上可用的众多JSON解析器之一运行JSON负载。您也可以使用XML解析器完成此任务,但它足够简单,您可能不需要学习其中一个工具箱

JSON解析器快速且易于使用,并将为您提供所需的内容