Когда я анализирую XML-файл на AWS S3, я получаю исключение. Когда я анализирую тот же файл на моем жестком диске, он работает нормально.
Вот как я анализирую файл на AWS S3:
import com.amazonaws.services.s3.AmazonS3
import scala.io.{BufferedSource, Source}
import com.amazonaws.services.s3.model.GetObjectRequest
private def loadNode(s3Client: AmazonS3, bucket: String, filePath: String) = {
val s3Object = s3Client.getObject(new GetObjectRequest(bucket, filePath))
val source: BufferedSource = Source.fromInputStream(s3Object.getObjectContent)
val joinedLines = source.mkString
val node = Try(xml.XML.loadString(joinedLines))
node
}
Когда я это делаю, я получаю следующее исключение:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
Вот как я могу загрузить файл локально:
val xml = XML.loadFile("/Users/paulreiners/data/my-file.xml")
Это прекрасно работает.
Когда я выполняю следующий код:
System.out.println("Content-Type: " + s3Object.getObjectMetadata.getContentType)
печатает:
Content-Type: application/octet-stream
Я не знаю, полезно ли это.
Так что же не так в случае S3?