package samples;
import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
public class LeitorXML {
public static void main(String[] args) {
File dir = new File (args[0]);
File[] xsds = dir.listFiles();
StreamSource[] schemaDocuments = new StreamSource[xsds.length];
for (int i = 0; i < xsds.length; i++) {
File xsdFile = xsds[i];
schemaDocuments[i] = new StreamSource(xsdFile);
}
Source xmlFile = new StreamSource(new File(args[1]));
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
try {
Schema schema = schemaFactory.newSchema(schemaDocuments);
javax.xml.validation.Validator validator = schema.newValidator();
validator.validate(xmlFile);
System.out.println("Arquivo XML valido.");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Programador sem memória
segunda-feira, 10 de novembro de 2014
Validar XML contra múltiplos arquivos XSD
Se o XSD de validação de um XML foi quebrado em uma estrutura de diversos arquivos, utilize esse código para validar a integridade do XSD
Usando JAXB para ler XMLs
Para gerar as classes java utilizando JAXB, você precisa do XSD do arquivo XML.
Com o XSD, você pode gerar as classes utilizando o eclipe ou com o comando de prompt xjc que vem com o pacote do JAXB.
Para o eclipse, utilize a opção exibida no print acima.
Com o XSD, você pode gerar as classes utilizando o eclipe ou com o comando de prompt xjc que vem com o pacote do JAXB.
Para o eclipse, utilize a opção exibida no print acima.
package samples;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import samples.jaxb.ObjectFactory;
import samples.jaxb.Pedido;
public class LeitorXML {
public static void main(String[] args) {
try {
// Nunca colocar esse trecho em um loop
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("pedido.xml"));
Pedido pedido = (Pedido) jaxbUnmarshaller.unmarshal(bis);
System.out.println(pedido.getIdPedido());
System.out.println(pedido.getRemetente());
System.out.println(pedido.getDestinatario().getNome());
System.out.println(pedido.getItem().get(0).getPreco());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Serializar objetos java
package samples;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
public class SerializerSample {
public static void main(String[] args) {
DadosVO dados = new DadosVO();
dados.setNome("Nome do usuario");
dados.setMaisDados(new MaisDadosVO());
dados.getMaisDados().setEndereco("Endereco");
File serializedXMLs = new File("c:/Marcel/sampleSerialize.ser");
// se o arquivo existe, deserializa, senao serializa.
if (serializedXMLs.exists()) {
try (InputStream file = new FileInputStream(serializedXMLs);
InputStream buffer = new BufferedInputStream(file);
ObjectInput input = new ObjectInputStream(buffer);) {
DadosVO dadosDeserializados = (DadosVO) input.readObject();
System.out.println("Nome: "+dadosDeserializados.getNome());
System.out.println("Endereço: "+dadosDeserializados.getMaisDados().getEndereco());
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
// serialize the List
try (OutputStream file = new FileOutputStream(serializedXMLs);
OutputStream buffer = new BufferedOutputStream(file);
ObjectOutput output = new ObjectOutputStream(buffer);) {
output.writeObject(dados);
System.out.println("objeto serializado.");
} catch (IOException ex) {
ex.printStackTrace();
serializedXMLs.delete();
}
}
}
}
Como criar uma planilha com Apache POI
package samples;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class App {
public static void main(String[] args) {
try {
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("Sheet");
// Usado para formatar celulas
CreationHelper createHelper = wb.getCreationHelper();
// formatador para data
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd/mm/yyyy"));
// formatador para valor monetário
CellStyle cellStyleValor = wb.createCellStyle();
cellStyleValor.setDataFormat((short)7);
// Cria primeira linha
Row row = sheet.createRow(0);
Cell valorMonetario = row.createCell(0);
valorMonetario.setCellStyle(cellStyleValor);
valorMonetario.setCellValue(122342.43433);
Cell data = row.createCell(1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
data.setCellValue(sdf.parse("2014-02-12"));
data.setCellStyle(cellStyle);
// Grava uma formula na linha
Cell valorRCOReal = row.createCell(2);
valorRCOReal.setCellType(Cell.CELL_TYPE_FORMULA);
valorRCOReal.setCellStyle(cellStyleValor);
valorRCOReal.setCellFormula("ROUND(A1,2)");
// redimensiona a coluna para
sheet.autoSizeColumn(0);
sheet.autoSizeColumn(1);
sheet.autoSizeColumn(2);
FileOutputStream fileOut = new FileOutputStream("c:/Marcel/PlanilhaSample.xls");
wb.write(fileOut);
wb.close();
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Assinar:
Comentários (Atom)