2013-04-30 39 views
1

這裏我沒有數據然後我得到了Pcode 0,但是在這裏我無法得到Pcode 0,我的意圖是讓Pcode爲零並顯示「Not Data Here」消息。 我有使用數據解析與XML,但不能正常,我有解析錯誤的錯誤,但無法找到,我在做錯誤。這裏是我的代碼:在xml解析中沒有正確獲取數據

Log.d("user id is ", userId + "!");     

String input = String.format("<Es_Request><Data><UserId>%s</UserId></Data></Es_Request>", userId); 
String response = HttpPostRetreiver .retriver(Url.url_getting_assignment,          input, GradeAssignmentActivity.this); 
     if (response != null) { 
    esResponse = XmlParser.parseAssignmentProfessorResponse(response); 
     Log.d("TAG", "Checking Value="+ esResponse.getResponseCode().getpCode()); 
     if (esResponse.getResponseCode().getpCode().equalsIgnoreCase("1")) { 
     assignmentDataInfo = esResponse .getAssignmentListData().getAssignmentDataInfo(); 
     int size = assignmentDataInfo.size(); 
     int i = 0; 
     for (; i < size; i++) { 
       EduInterface.assignmetIdArrayList.add(assignmentDataInfo.get(i).getAssignmentId()); 
       EduInterface.assignmetNameArrayList.add(assignmentDataInfo.get(i).getAssignmentName()); 
     } 
    } else { 

     test = 1; 
     Log.d("else", "Not data Here"); 
    } 
    } 

    } else { 
    Log.d("TAG", "Error in Webservice"); 

    } 
    } catch (Exception e) { 
     Log.e("Grade Assignment class", e.toString() + ""); 
} 

我有,第一個用戶ID是5!然後得到錯誤的Grade Assignemt Class錯誤。我一直問題解析這裏是考取>

輸入字符串:Es_Request><Data><UserId>913</UserId></Data></Es_Request>

響應字符串:

<?xml version="1.0" encoding="utf-8"?><Es_Response><Es_Session_Id></Es_Session_Id> 
<Bpn_Request_Id></Bpn_Request_Id><Response_Code><Pcode>0</Pcode><Scode>Unsuccessful</Scode></Response_Code><Data><message>Assignments not found for Professor & CourseId.</message></Data></Es_Response> 

這裏是我的處理程序類:

@Override 
    public void startElement(String uri, String localName, String qName, 
      Attributes atts) throws SAXException { 
     content = new StringBuilder(); 
     if (localName.equalsIgnoreCase("Data")) { 
      assignmentListData=new AssignmentListData(); 
     } else if (localName.equalsIgnoreCase("assignments")) { 
      assignmentItems = new AssignmentItems(); 
     } 
     else if (localName.equalsIgnoreCase("Es_Response")) { 
      esResponse=new EsResponse(); 
     } else if (localName.equalsIgnoreCase("Response_Code")) { 
      responseCode=new ResponseCode(); 
     } 
    } 
    @Override 
    public void endElement(String uri, String localName, String qName) 
      throws SAXException { 
     if (localName.equalsIgnoreCase("Pcode")) { 
       responseCode.setpCode(content.toString()); 
       Log.d("TAG", "Pcode Value->"+content.toString()); 
      } 
      else if (localName.equalsIgnoreCase("Response_Code")) { 
       esResponse.setResponseCode(responseCode); 
      } 
      else if (localName.equalsIgnoreCase("AssignmentId")) { 
       assignmentItems.setAssignmentId(content.toString()); 
      } 
      else if (localName.equalsIgnoreCase("AssignmentName")) { 
       assignmentItems.setAssignmentName(content.toString()); 
      } 

      else if (localName.equalsIgnoreCase("Assignments")) { 
       assignmentDataInfo.add(assignmentItems); 
      } 
      else if (localName.equalsIgnoreCase("Data")) { 
       assignmentListData.setAssignmentDataInfo(assignmentDataInfo); 
      } 
      else if (localName.equalsIgnoreCase("Es_Response")) { 
       esResponse.setAssignmentListData(assignmentListData); 
      } 

    } 

我得到了這個logcat:

04-30 19:25:51.378: D/getting course list->(1598): Line 322---RESPONSE<?xml version="1.0" encoding="utf-8"?><Es_Response><Es_Session_Id></Es_Session_Id> 
04-30 19:25:51.378: D/getting course list->(1598): <Bpn_Request_Id></Bpn_Request_Id><userIDName>913</userIDName><schoolID>1</schoolID><CourseID>977</CourseID><Response_Code><Pcode>0</Pcode><Scode>Unsuccessful</Scode><Test>977</Test><ROLE ID>4</ROLE ID></Response_Code><Data><message>Assignments not found for Professor & CourseId.</message></Data></Es_Response> 
04-30 19:25:51.378: D/user id is(1598): 913 
04-30 19:25:51.378: D/school id is(1598): 1 
04-30 19:25:51.388: D/TAG(1598): Pcode Value->0 
04-30 19:25:51.398: W/System.err(1598): org.apache.harmony.xml.ExpatParser$ParseException: At line 2, column 189: not well-formed (invalid token) 
04-30 19:25:51.398: W/System.err(1598):  at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:499) 
04-30 19:25:51.398: W/System.err(1598):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:484) 
04-30 19:25:51.409: W/System.err(1598):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:309) 
04-30 19:25:51.409: W/System.err(1598):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:267) 
04-30 19:25:51.409: W/System.err(1598):  at sdei.edustatusnew.services.XmlParser.parseAssignmentProfessorResponse(XmlParser.java:840) 
04-30 19:25:51.409: W/System.err(1598):  at sdei.edustatusnew.gradebook.GradeAssignmentActivity$GetDataTask.doInBackground(GradeAssignmentActivity.java:326) 
04-30 19:25:51.409: W/System.err(1598):  at sdei.edustatusnew.gradebook.GradeAssignmentActivity$GetDataTask.doInBackground(GradeAssignmentActivity.java:1) 
04-30 19:25:51.427: W/Trace(1598): Unexpected value from nativeGetEnabledTags: 0 
04-30 19:25:51.427: W/Trace(1598): Unexpected value from nativeGetEnabledTags: 0 
04-30 19:25:51.438: W/Trace(1598): Unexpected value from nativeGetEnabledTags: 0 
04-30 19:25:51.438: W/Trace(1598): Unexpected value from nativeGetEnabledTags: 0 
04-30 19:25:51.468: W/System.err(1598):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
04-30 19:25:51.478: W/System.err(1598):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
04-30 19:25:51.478: W/System.err(1598):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
04-30 19:25:51.488: W/System.err(1598):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
04-30 19:25:51.488: W/System.err(1598):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
04-30 19:25:51.488: W/System.err(1598):  at java.lang.Thread.run(Thread.java:856) 
04-30 19:25:51.488: E/Grade Assignment class(1598): java.lang.NullPointerException 

您能否幫忙,我的代碼有什麼錯誤。提前致謝。

+0

請使用'Log.e'版本來打印一個堆棧跟蹤:'Log.e(「Grade Assignment class」,「parse failed」,e);'。只要打印'e.toString()+「」',你的logcat輸出就會缺少必要的重要信息來追蹤發生了什麼。我們看到的只是「java.lang.NullPointerException」。 – 2013-04-30 19:57:45

+0

@ user2332049檢查我的答案 – 2013-04-30 20:16:54

回答

0

我想,你一直問題分配找不到教授& CourseId。響應字符串中的標記。請嘗試& - >和你可以解決這個問題。

1

您的XML中有錯誤。在logcat棧跟蹤中很清晰,即,org.apache.harmony.xml.ExpatParser$ParseException: At line 2, column 189: not well-formed (invalid token)

第2行第189列的標記是<ROLE ID>4</ROLE ID>。 XML標籤不應包含任何空格字符。

的解決方案是將其更改爲<ROLE_ID>4</ROLE_ID>