我正在尝试使用google voice api创建一个java应用程序,并且获取SMS数据和convos的方法会返回一个像这样的整个html页面
我编写了一个SMSMessage类,它将HTML作为String接收,并将解析标记之间的第一个消息数据,但它使用的是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 + " ]";
}
}
Run Code Online (Sandbox Code Playgroud)
这将返回一个相当长的arrayList,如[messages,0609dc2d10f365600fc48372fe3122a7ba3147fa,id,0609dc2d10f365600fc48372fe3122a7ba3147fa,phoneNumber,+ 17654260681,displayNumber,(765)426-0681,startTime,1365514638712,displayStartDateTime,4/9/13 9,37 AM,displayStartTime, 9,37 AM,relativeStartTime,40分钟前,注意,, isRead,true,isSpam,false,isTrash,false,star,false,messageText,hi,labels,[inbox,sms,all],type,11,children, ]
然后我得到一个特定的元素并将其分配给一个字段.
我如何用HashMap替换arrayList,其中键是"relativeStartTime",值是下一个int?
这很可爱.
首先,它不是HTML,而是XML.
其次,您想要的数据是JSON格式.
所以你有一个包含JSON数据的XML有效负载.奇妙.
您应该做的是剥离XML标记,保留JSON有效负载.然后通过Internet上可用的许多JSON解析器之一运行JSON有效内容.您也可以使用XML解析器来完成此任务,但它足够简单,您可能也不需要学习其中一个工具包.
JSON解析器快速且易于使用,并且几乎可以为您提供所需的内容.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |