Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用castor将xml转换为java对象_Java_Xml_Castor_Unmarshalling - Fatal编程技术网

使用castor将xml转换为java对象

使用castor将xml转换为java对象,java,xml,castor,unmarshalling,Java,Xml,Castor,Unmarshalling,在使用Castor的解组过程中,如何忽略和标记 Xml examole: <?xml version="1.0" encoding="UTF-8"?> <envelope> <header> <message>consultaTelefonosVigentesSocios</message> </header> <body> <datosTelefonosVigentesSoci

在使用Castor的解组过程中,如何忽略
标记

Xml examole:

<?xml version="1.0" encoding="UTF-8"?>
<envelope>
  <header>
    <message>consultaTelefonosVigentesSocios</message>
  </header>
  <body>
    <datosTelefonosVigentesSocios>
      <listaTelefonosVigentesSocios>
        <nroInterlocutor>2000393451672</nroInterlocutor>
        <nroContrato>S6125345450573001</nroContrato>
        <nroTelefono>011-4454451-8293</nroTelefono>
        <tipoTelefono>T</tipoTelefono>
        <claseDireccion>Z001</claseDireccion>
        <descClaseDireccion>Correspondencia</descClaseDireccion>
        <marcaEstandar>X</marcaEstandar>
        <nroInterlocutorAsociadoDomicilio>200053945351672</nroInterlocutorAsociadoDomicilio>
      </listaTelefonosVigentesSocios>
      <listaTelefonosVigentesSocios>
        <nroInterlocutor>200053435391672</nroInterlocutor>
        <nroContrato>S612535430573001</nroContrato>
        <nroTelefono>011-44453551-8299</nroTelefono>
        <tipoTelefono>T</tipoTelefono>
        <claseDireccion>Z001</claseDireccion>
        <descClaseDireccion>Correspondencia</descClaseDireccion>
        <marcaEstandar/>
        <nroInterlocutorAsociadoDomicilio>20005543391672</nroInterlocutorAsociadoDomicilio>
      </listaTelefonosVigentesSocios>
      </datosTelefonosVigentesSocios>
  </body>
  <fault>
    <faultactor>servicios.page:consultaTelefonosVigentesSocios</faultactor>
  </fault>
</envelope>

您可以使用XMLStreamReader(StAX)作为输入,而不是使用输入流。然后将XMLStreamReader前进到映射到的内容的开始元素事件。然后让Castor从XMLStreamReader中解组


如果Castor不支持StAX,那么我可以向您展示如何使用JAXB实现它。我负责EclipseLink JAXB实现(MOXy)。

您可以使用XMLStreamReader(StAX)作为输入,而不是使用输入流。然后将XMLStreamReader前进到映射到的内容的开始元素事件。然后让Castor从XMLStreamReader中解组

如果Castor不支持StAX,那么我可以向您展示如何使用JAXB实现它。我负责EclipseLink JAXB实现(MOXy)

<?xml version="1.0"?>
<mapping>

 <class
  name="ar.com.telefonosSocioByNroContratoService.backend.service.TelefonosVigentesSocios">
  <map-to xml="datosTelefonosVigentesSocios" />
  <field name="listaTelefonosVigentesSocios"
   type="ar.com.telefonosSocioByNroContratoService.backend.service.TelefonoVigenteSocio"
   collection="arraylist">
   <bind-xml name="listaTelefonosVigentesSocios" />
  </field>
 </class>

 <class
  name="ar.com.telefonosSocioByNroContratoService.backend.service.TelefonoVigenteSocio">
  <map-to xml="listaTelefonosVigentesSocios" />
  <field name="nroInterlocutor" type="java.lang.String">
   <bind-xml name="nroInterlocutor" node="element" />
  </field>
  <field name="nroContrato" type="java.lang.String">
   <bind-xml name="nroContrato" node="element" />
  </field>
  <field name="nroTelefono" type="java.lang.String">
   <bind-xml name="nroTelefono" node="element" />
  </field>
  <field name="tipoTelefono" type="java.lang.String">
   <bind-xml name="tipoTelefono" node="element" />
  </field>
  <field name="marcaEstandar" type="java.lang.String">
   <bind-xml name="marcaEstandar" node="element" />
  </field>
  <field name="descClaseDireccion" type="java.lang.String">
   <bind-xml name="descClaseDireccion" node="element" />
  </field>
  <field name="nroInterlocutorAsociadoDomicilio" type="java.lang.String">
   <bind-xml name="nroInterlocutorAsociadoDomicilio" node="element" />
  </field>
 </class>
</mapping>
public class TelefonosSocioByNroContratoServiceTest {

 @Test
 public void testUsuarioIntranetListfromXML() throws Exception{
   Mapping mapping= new Mapping();
   ClassPathResource mappingResource = 
    new ClassPathResource("/ar/com/telefonosSocioByNroContratoService/backend/service/telefonosVigenteSocios.map.xml");

      mapping.loadMapping(mappingResource.getURL());
      ClassPathResource inputExample= new ClassPathResource("ar/com/test/castor/consultaTelefonosVigentesSocios.xml");
      Reader reader = new FileReader(inputExample.getFile());

      Unmarshaller unmarshaller = new Unmarshaller(TelefonosVigentesSocios.class);
      unmarshaller.setMapping(mapping);
         TelefonosVigentesSocios telefonosVigentesSocios = (TelefonosVigentesSocios) unmarshaller.unmarshal(reader);
         reader.close();
         Assert.assertNotNull(telefonosVigentesSocios);
         Assert.assertNotNull(telefonosVigentesSocios.getListaTelefonosVigentesSocios());
         Assert.assertTrue("se esperaba  not empty telefonos",!telefonosVigentesSocios.getListaTelefonosVigentesSocios().isEmpty());
 }
}