Hi,
i do the same differently. Using S3 you don't need parsing XML. Maybe mismatch in included libraries. Here is snippet of my code:
if (!QUERY) {
objectListing = hs3Client.listObjects(new ListObjectsRequest().withBucketName(bucketName));
}
else {
objectListing = hs3Client.listObjects(new ListObjectsRequest().withBucketName(bucketName).withPrefix(objNamePrefix));
}
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
String objKey = objectSummary.getKey();
System.out.println(" * " + objKey);
long objSize = objectSummary.getSize();
System.out.println("\tSize = " + objSize);
System.out.println("\tLastModified [UTC] = " + sdf.format(objectSummary.getLastModified()));
System.out.println("\tMD5 = " + objectSummary.getETag());
System.out.println("\tOwner = " + objectSummary.getOwner());
System.out.println("\tStorageClass = " + objectSummary.getStorageClass());
// System.out.println("\tResourceURL = " + hs3Client.getResourceUrl(bucketName,objKey)); 4 deprecated hs3Client
System.out.println("\tURL = " + hs3Client.getUrl(bucketName,objKey));
System.out.println("\t*");
ObjectMetadata objmetaData = hs3Client.getObjectMetadata(bucketName,objKey);
Map<String, Object> metaMap = objmetaData.getRawMetadata();
metaMap.forEach((key,value) -> System.out.println("\tRawMetadata = " + key + ":\t" + value));
//System.out.println("\tReplication Status = " + objmetaData.getRawMetadataValue(OBJECT_REPLICATION_STATUS));
//System.out.println("\tReplication Status = " + objmetaData.getReplicationStatus());
System.out.println("\t*");
Iterator entries = objmetaData.getUserMetadata().entrySet().iterator();
while (entries.hasNext()) {
Entry entr = (Entry) entries.next();
System.out.println("\tUserMetadata = " + entr.getKey() + ":\t" + entr.getValue());
}
//Get Raw metadata
//Map(String, Object) = objmetadata.getRawMetadata();
}
Regards.
Michal