用Java解析HTML到Hashmap
我正在尝试用google voice api制作一个java应用程序,以及一个获取SMS数据和Convas返回整个html页面的方法,如下所示 我编写了一个SMSMessage类,它将HTML作为字符串接收,并将解析标记之间的第一条消息数据,但它使用arrayList而不是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
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解析器快速且易于使用,并将为您提供所需的内容