Pessoal, estou com um probleminha para escrever em um arquivo xml.
Verifiquei o conteúdo da String através do System.out.println(xmlFile.toString()); e está com os dados corretos, acredito que o problema seja no bloco:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(xmlFile);
out.close();
Fazendo com que o arquivo products.xml gerado apareça com esta sujeira na frente como segue:
’<products><product>
<productId>1</productId>
<productName>Chai</productName>
<supplierId>1</supplierId>
<categoryId>1</categoryId>
<quantityPerUnit>10 boxes x 20 bags</quantityPerUnit>
<unitPrice>18.0</unitPrice>
<unitsInStock>39.0</unitsInStock>
<unitsOnOrder>0</unitsOnOrder>
<reorderLevel>10</reorderLevel>
</product></products>
Estou tentando ler este arquivo em uma grid e a rotina não funciona com esta sujeira no início do xml.
Alguém teria alguma sugestão de como corrigir?
Segue abaixo a implementação utilizando o XStream para montar a String em um formato XML.
package app.teste;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class Run {
private static final String FILE = "C:\\Projetos\\Workspaces\\checklist-workspace\\XStream\\files\\products.xml";
public static void main(String[] args){
XStream xstream = new XStream(new DomDriver());
xstream.alias("product", Product.class);
Product product = new Product();
product.setProductId("1");
product.setProductName("Chai");
product.setSupplierId("1");
product.setCategoryId("1");
product.setQuantityPerUnit("10 boxes x 20 bags");
product.setUnitPrice(new Double(18.0000));
product.setUnitsInStock(new Double(39));
product.setUnitsOnOrder("0");
product.setReorderLevel("10");
String xmlHead = "<products>";
String xmlBody = xstream.toXML(product);
String xmlFooter = "</products>";
String xmlFile = xmlHead + xmlBody + xmlFooter;
String file = FILE;
try{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(xmlFile);
out.close();
System.out.println(xmlFile.toString());
}catch(IOException ex){
ex.printStackTrace();
}
}
}