Olá pessoal, tudo bem?
Estou tendo dificuldades técnicas para poder continuar o desenvolvimento do meu projeto, será que podem me ajudar?
Bom, estou fazendo o E-Financeira, que é uma integração das empresas de previdência privada com a receita federal, e como desenvolvo em um sistema para previdência estou tendo que faze-lo.
Estou usando Java 8, e a IDE é o Intellij Idea.
Já importei o arquivo “.xsd” e também o “wsdl”.
Estou tentando popular os dados que deverão compôr o xml que deverá ser enviado, mas não estou conseguindo.
Eis os códigos:
Essa é a classe “principal” do E-Financeira, que será o root do XML (essa veio importada pelo XSD).
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"loteEventos"
})
@XmlRootElement(name = "eFinanceira", namespace = "http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1")
public class EFinanceira {
@XmlElement(namespace = "http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1", required = true)
protected EFinanceira.LoteEventos loteEventos;
public EFinanceira.LoteEventos getLoteEventos() {
return loteEventos;
}
public void setLoteEventos(EFinanceira.LoteEventos value) {
this.loteEventos = value;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"evento"
})
public static class LoteEventos {
@XmlElement(namespace = "http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1", required = true)
protected List<TArquivoeFinanceira> evento;
public List<TArquivoeFinanceira> getEvento() {
if (evento == null) {
evento = new ArrayList<TArquivoeFinanceira>();
}
return this.evento;
}
}
}
Essa é a classe com o tipo do atributo que o XSD espera (essa classe veio importada pelo XSD).
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TArquivoeFinanceira", namespace = "http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1", propOrder = {
"any"
})
public class TArquivoeFinanceira {
@XmlAnyElement
protected Element any;
@XmlAttribute(name = "id", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
public Element getAny() {
return any;
}
public void setAny(Element value) {
this.any = value;
}
public String getId() {
return id;
}
public void setId(String value) {
this.id = value;
}
}
Esse é o ObjectFactory que veio importado pelo XSD também
@XmlRegistry
public class ObjectFactory {
public ObjectFactory() {
}
public EFinanceira createEFinanceira() {
return new EFinanceira();
}
public EFinanceira.LoteEventos createEFinanceiraLoteEventos() {
return new EFinanceira.LoteEventos();
}
public TArquivoeFinanceira createTArquivoeFinanceira() {
return new TArquivoeFinanceira();
}
}
Aqui está uma classe que eu criei pra testar a inserção dos campos no XML
@XmlRootElement(namespace = "http://www.eFinanceira.gov.br/schemas/aberturaLote/v1_0_1")
public class TesteModaFoca extends SuperTesteModaFoca{
protected String xamame;
@XmlElement(namespace = "http://www.eFinanceira.gov.br/schemas/aberturaLote/v1_0_1", required = true)
public String getXamame() {
return xamame;
}
public void setXamame(String xamame) {
this.xamame = xamame;
}
}
E a superclasse dessa classe:
public class SuperTesteModaFoca implements org.w3c.dom.Element {
//@métodos sobrescritos
}
E aqui está o meu teste:
public static void main(String[] args) {
try {
ObjectFactory objFactory = new ObjectFactory();
EFinanceira eFinanceira = objFactory.createEFinanceira();
TesteModaFoca teste = new TesteModaFoca();
teste.setXamame("aaaahh muleeeeke");
TArquivoeFinanceira tArquivoeFinanceira1 = objFactory.createTArquivoeFinanceira();
tArquivoeFinanceira1.setAny(teste);
tArquivoeFinanceira1.setId("ID1");
TArquivoeFinanceira tArquivoeFinanceira2 = objFactory.createTArquivoeFinanceira();
tArquivoeFinanceira2.setAny(teste);
tArquivoeFinanceira2.setId("ID2");
EFinanceira.LoteEventos lote = objFactory.createEFinanceiraLoteEventos();
List<TArquivoeFinanceira> lista = lote.getEvento();
lista.add(tArquivoeFinanceira1);
lista.add(tArquivoeFinanceira2);
eFinanceira.setLoteEventos(lote);
JAXBContext jaxbContext = JAXBContext.newInstance(eFinanceira.getClass());
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(eFinanceira, System.out);
}
catch (JAXBException e) {
e.printStackTrace();
}
}
E está me retornando o sequinte XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<eFinanceira xmlns="http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1">
<loteEventos>
<evento id="ID1"/>
<evento id="ID2"/>
</loteEventos>
</eFinanceira>
Mas quero fazer inserir os elementos “xamame” da classe TesteModaFoca no elemento
Teria que ficar mais ou menos assim:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<eFinanceira xmlns="http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1">
<loteEventos>
<evento id="ID1">
<xamame>aaaahh muleeeeke</xamame>
</evento>
<evento id="ID2">
<xamame>aaaahh muleeeeke</xamame>
</evento>
</loteEventos>
</eFinanceira>
ALGUMA IDEIAAA?? por favor
