diff --git a/src/com/owncloud/android/lib/utils/ShareXMLParser.java b/src/com/owncloud/android/lib/utils/ShareXMLParser.java
index 161504ad..ca4934fd 100644
--- a/src/com/owncloud/android/lib/utils/ShareXMLParser.java
+++ b/src/com/owncloud/android/lib/utils/ShareXMLParser.java
@@ -221,7 +221,8 @@ public class ShareXMLParser {
 			}
 			String name = parser.getName();
 			if (name.equalsIgnoreCase(NODE_ELEMENT)) {
-				shares.add(readElement(parser));
+				readElement(parser, shares);
+				
 			}  else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
 				share = new OCShare();
 				String value = readNode(parser, NODE_ID);
@@ -244,7 +245,6 @@ public class ShareXMLParser {
 		if (share != null) {
 			shares.add(share);
 		}
-			
 
 		return shares;
 
@@ -258,7 +258,7 @@ public class ShareXMLParser {
 	 * @throws XmlPullParserException
 	 * @throws IOException
 	 */
-	private OCShare readElement(XmlPullParser parser) throws XmlPullParserException, IOException {
+	private void readElement(XmlPullParser parser, ArrayList<OCShare> shares) throws XmlPullParserException, IOException {
 		parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
 		
 		OCShare share = new OCShare();
@@ -272,7 +272,9 @@ public class ShareXMLParser {
 			String name = parser.getName();
 
 			if (name.equalsIgnoreCase(NODE_ELEMENT)) {
-				share = readElement(parser);
+				// patch to work around servers responding with extra <element> surrounding all the shares on the same file before
+				// https://github.com/owncloud/core/issues/6992 was fixed
+				readElement(parser, shares);
 
 			} else if (name.equalsIgnoreCase(NODE_ID)) {
 				share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
@@ -329,7 +331,13 @@ public class ShareXMLParser {
 			} 
 		}		
 
-		return share;
+		if (isValidShare(share)) {
+			shares.add(share);
+		}
+	}
+
+	private boolean isValidShare(OCShare share) {
+		return (share.getIdRemoteShared() > -1);
 	}
 
 	private void fixPathForFolder(OCShare share) {