J'essaie de comprendre IO en utilisant StaX, mais je continue à obtenir des erreurs "malformées" et "EAT prématurée" du lecteur. C'est un code de lecture créé en utilisant StaX, comme dans l'exemple suivant.Java, StaX code simple, mais obtenir une erreur d'analyse, fin prématurée du fichier
J'ai réduit mon code à la configuration la plus simple, et j'obtiens toujours une erreur. D'où vient-il?
SSCCE (devrait lancer erreur)
package XMLTest;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
public class SaveLoadTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
final String FILE = "test.xml";
//////////// WRITE
final XMLOutputFactory OFACT = XMLOutputFactory.newInstance();
final XMLEventFactory EFACT = XMLEventFactory.newInstance();
final XMLEventWriter WRITER = OFACT.createXMLEventWriter(new FileOutputStream(FILE));
WRITER.add(EFACT.createStartDocument());
WRITER.add(EFACT.createComment("As basic as it gets."));
WRITER.add(EFACT.createEndDocument());
WRITER.close();
//////////// READ
final XMLInputFactory IFACT = XMLInputFactory.newInstance();
final XMLEventReader READER = IFACT.createXMLEventReader(new FileInputStream(FILE));
while (READER.hasNext()) {
READER.nextEvent();
}
}
}
Et l'erreur:
Exception in thread "main" javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,49]
Message: Premature end of file.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594)
at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:85)
at XMLTest.SaveLoadTest.main(SaveLoadTest.java:34)
J'ai eu un coup d'oeil à plusieurs autres SO questions (ou semblent thisthis le plus pertinent), mais je J'ai du mal à les relier à cette situation ...
EDIT
En outre, j'ai essayé cette lecture et écriture dans des opérations séparées, et la même chose se produit.
MODIFIER LE DEUXIÈME
fichier de sortie XML, comme l'a demandé.
<?xml version="1.0"?><!--As basic as it gets.-->
Veuillez également poster votre XML d'entrée. –
Aucune entrée XML, elle est faite à la volée - je veux juste créer un en-tête, créer un commentaire, fermer le document, puis le lire plus tard. – Ben
C'est celui que je veux dire. test.xml devrait être disponible dans votre système de fichiers. –