xml 解析に問題があります。選択した項目 (コース) に必要なデータがあり、成功したコード 1 (つまり、pcode) が返された場合、それは問題ではありませんが、問題は選択した項目 (コース) のデータがないことです。 、コード 0 (pcode 0) を返します。
私の問題は、解析中に問題があることです。
入力;<Es_Request><Data><UserId>913</UserId><SchoolId>1</SchoolId><CourseId>977</CourseId></Data></Es_Request>
Web からの応答:
<Es_Response>
<Es_Session_Id></Es_Session_Id>
<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>
<ROLEID>4</ROLEID>
</Response_Code>
<Data>
<message>Assignments not found for Professor & CourseId.</message>
</Data>
</Es_Response>
ここに解析用のJavaコードがあります
if (response != null) {
esResponse = XmlParser.parseAssignmentProfessorResponse(response);
if (esResponse.getResponseCode().getpCode().equalsIgnoreCase("1")) {
AssignmentDataInfo 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 {
Log.d("else", "Data Not Found For this Selected Item");
}
}
ハンドラー クラスは次のとおりです。
@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);
}
}
次のログ猫エラーが発生しました:
05-02 08:55:42.724: D/TAG(1794): Pcode Value->0
05-02 08:55:43.764: W/System.err(1794): at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:484)
05-02 08:55:43.764: W/Trace(1794): Unexpected value from nativeGetEnabledTags: 0
05-02 08:55:43.764: W/Trace(1794): Unexpected value from nativeGetEnabledTags: 0
05-02 08:55:43.764: W/System.err(1794): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:309)
05-02 08:55:43.764: W/System.err(1794): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:267)
05-02 08:55:43.774: W/System.err(1794): at test.services.XmlParser.parseAssignmentProfessorResponse(XmlParser.java:840)
05-02 08:55:43.774: W/System.err(1794): at test.gradebook.GradeAssignmentActivity$GetDataTask.doInBackground(GradeAssignmentActivity.java:326)
05-02 08:55:43.774: W/System.err(1794): at test.gradebook.GradeAssignmentActivity$GetDataTask.doInBackground(GradeAssignmentActivity.java:1)
05-02 08:55:43.815: W/System.err(1794): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-02 08:55:44.334: E/Grade Assignment class(1794): parse failed
05-02 08:55:44.334: E/Grade Assignment class(1794): java.lang.NullPointerException
05-02 08:55:44.334: E/Grade Assignment class(1794): at test.gradebook.GradeAssignmentActivity$GetDataTask.doInBackground(GradeAssignmentActivity.java:329)
05-02 08:55:44.334: E/Grade Assignment class(1794): at test.gradebook.GradeAssignmentActivity$GetDataTask.doInBackground(GradeAssignmentActivity.java:1)
05-02 08:55:44.334: E/Grade Assignment class(1794): at android.os.AsyncTask$2.call(AsyncTask.java:287)
詳細が長くなって申し訳ありませんが、この問題を解決したいので、基本的なアイデアを教えてください。