1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-10 01:16:23 +00:00

OC-2678: Parse XMl Response, fix some problems in parsing method

This commit is contained in:
masensio 2014-01-31 11:26:53 +01:00
parent f3453f138f
commit 7e9efcfb35

View File

@ -199,6 +199,7 @@ public class ShareXMLParser {
*/ */
private ArrayList<OCShare> readData(XmlPullParser parser) throws XmlPullParserException, IOException { private ArrayList<OCShare> readData(XmlPullParser parser) throws XmlPullParserException, IOException {
ArrayList<OCShare> shares = new ArrayList<OCShare>(); ArrayList<OCShare> shares = new ArrayList<OCShare>();
OCShare share = null;
parser.require(XmlPullParser.START_TAG, ns, NODE_DATA); parser.require(XmlPullParser.START_TAG, ns, NODE_DATA);
Log.d(TAG, "---- NODE DATA ---"); Log.d(TAG, "---- NODE DATA ---");
@ -209,34 +210,8 @@ public class ShareXMLParser {
String name = parser.getName(); String name = parser.getName();
if (name.equalsIgnoreCase(NODE_ELEMENT)) { if (name.equalsIgnoreCase(NODE_ELEMENT)) {
shares.add(readElement(parser)); shares.add(readElement(parser));
} else { } else { // Parse Create XML Response
//skip(parser); share = new OCShare();
OCShare share = tryReadCreateXMLResponse(parser);
if (share.getIdRemoteShared() > -1) {
shares.add(share);
}
}
}
return shares;
}
/**
* Parse Create XML Response
* @param parser
* @return
*/
private OCShare tryReadCreateXMLResponse(XmlPullParser parser) throws XmlPullParserException, IOException {
OCShare share = new OCShare();
Log.d(TAG, "---- Create Share Response ---");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equalsIgnoreCase(NODE_ID)) { if (name.equalsIgnoreCase(NODE_ID)) {
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID))); share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
@ -246,14 +221,24 @@ public class ShareXMLParser {
} else if (name.equalsIgnoreCase(NODE_TOKEN)) { } else if (name.equalsIgnoreCase(NODE_TOKEN)) {
share.setToken(readNode(parser, NODE_TOKEN)); share.setToken(readNode(parser, NODE_TOKEN));
} else { } else {
skip(parser); skip(parser);
} }
}
} }
return share; if (share != null) {
shares.add(share);
} }
return shares;
}
/** /**
* Parse Element node * Parse Element node
* @param parser * @param parser