使用GWT解析XML或JSON时的挫败感

时间:2009-07-11 16:30:39

标签: php xml json gwt parsing

在过去的几天里,我一直试图让GWT解释JSONValue或从服务器传回来的XML字符串(使用PHP)。

我非常沮丧,因为我似乎无法得到任何工作。对于XML,我已经确认从PHP传递给GWT的String是一个正确的XML字符串。但是,当我尝试解析XML时,我得到了一堆空错误。

使用JSON,我从PHP获得以下内容:

 Value: {"item":[{"ID":null, "Primary":null, "Secondary":null, "Date":null, "Region":null},{"ID":null, "Primary":null, "Secondary":null, "Date":null, "Region":null},{"ID":null, "Primary":null, "Secondary":null, "Date":null, "Region":null}]}

我不知道为什么值为NULL,但这就是GWT查找JSON的方式:

 public void onChange(Widget sender) {
   lb.setText("Date selected: " + calendar.getDate());
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
   String current = df.format(calendar.getDate());

 RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode("http://www.kbehr.com/calendar/view_duty.php"));

try {
  builder.sendRequest(current, new RequestCallback(){
    public void onError(Request request, Throwable exception) {
      requestFailed(exception);
    }

    public void onResponseReceived(Request request, Response response) {

        String responseText = response.getText();
        try {
          JSONValue jsonValue = JSONParser.parse(responseText);
          processJSON(jsonValue);
        } catch (Exception e) {
          Window.alert("Error: " + e);
        }

    }});
}catch (RequestException ex) {
  requestFailed(ex);
}    

 }});
   fp.add(calendar);
   fp.add(lb);   
 }

 public void processJSON(JSONValue messageXml) {

 vp.clear();
 vp.add(new Label("Value: " + messageXml));
 RootPanel.get("slot2").add(vp);

 }

有谁知道我在使用JSON做错了什么?我在PHP中执行json_encode($ array),我不知道如何在GWT中将其分解。

不幸的是,网上的例子不多......

谢谢!

1 个答案:

答案 0 :(得分:1)

看起来您的第一个问题是服务器端(PHP)并且与GWT无关。只是去你的页面(http://www.kbehr.com/calendar/view_duty.php)应该返回某种数据,而不是一大堆空值(可能)。

至于如何在GWT中使用JSON解析器,转到here并开始阅读“2.在客户端代码中操作JSON数据”