dsmdanbr wrote:
viniciuspadua wrote:colocar o prefixo vai depender da sua codificação: para mim fiz assim:
com isso ao gerar o xml ja vai com o namespace!
Então, no caso isso seria caso tivesse gerado o xml item por item não é isso?
Porque eu instanciei um objeto MensagemTISS setei os campos e salvei ele em XML
através da JAXB.
Olha como ficou o código de teste:
ObjectFactory objFactory = new ObjectFactory();
MensagemTISS mensagem = new MensagemTISS();
mensagem.setCabecalho(new CabecalhoTransacao());
mensagem.getCabecalho().setVersaoPadrao("2.02.01");
mensagem.getCabecalho().setIdentificacaoTransacao(new CabecalhoTransacao.IdentificacaoTransacao());
mensagem.getCabecalho().getIdentificacaoTransacao().setTipoTransacao(StTipoTransacao.ENVIO_LOTE_GUIAS);
mensagem.getCabecalho().getIdentificacaoTransacao().setSequencialTransacao(new BigInteger("1"));
mensagem.setPrestadorParaOperadora(new MensagemTISS.PrestadorParaOperadora());
mensagem.getPrestadorParaOperadora().setLoteGuias(ctLoteGuias);
//mensagem.setCabecalho(new CabecalhoTransacao());
mensagem.setEpilogo(objFactory.createMensagemTISSEpilogo());
mensagem.getEpilogo().setHash("0");
MensagemTiss mTiss = new MensagemTiss();
try {
mTiss.setDocumentoMensagem(mensagem);
} catch (Exception e) {
e.printStackTrace();
}
mensagem.getEpilogo().setHash(mTiss.getHashCalculado());
try {
JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas.v20201");
Marshaller m = jc.createMarshaller();
m.setProperty(m.JAXB_ENCODING, "ISO-8859-1");
m.setProperty(m.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(mensagem, new FileOutputStream("d:/a.xml"));
Unmarshaller unmarshaller = jc.createUnmarshaller();
File file = new File("d:/a.xml");
mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file.getAbsolutePath()));
String mensagemTxt = security.log.util.LogUtil.readFile(file).replace("http://www.ans.gov.br/padroes/tiss/schemas/v20201", "http://www.ans.gov.br/padroes/tiss/schemas");
file.createNewFile();
FileWriter output = new FileWriter(file);
BufferedWriter bufOutput = new BufferedWriter(output);
bufOutput.write(mensagemTxt);
bufOutput.close();
MensagemTiss mensagemTiss = new MensagemTiss(file.getAbsolutePath());
System.out.println(mensagemTiss.getHashCalculado());
} catch (JAXBException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Entendeu? Não teria como eu setar o prefixo através da JAXB?
Obrigado.