我有下一个 xml:
<mensajeWS>
<respuestaGetCabecerasType>
<cabeceras>
<cabecera>
<id>1234</id>
<tipoMensaje>3</tipoMensaje>
<datos>
<fechaEnvio>2023-12-13T00:05:00</fechaEnvio>
<fechaEnvio>2023-12-14T00:05:00</fechaEnvio>
</datos>
</cabecera>
</cabeceras>
</respuestaGetCabecerasType>
</mensajeWS>
我想将他们的数据映射到以下对象中:
public class Cabecera implements Serializable {
/**
*
*/
private static final long serialVersionUID = -865317642824095952L;
private int id;
private int tipoMensaje;
private DatosRecepcion datos;
DatosRecepcion 是一个具有以下变量的类:
public class DatosRecepcion implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6703565058845907875L;
private List<String> fechaEnvio;
要将 xml 数据映射到对象,请执行以下操作:
List<Cabecera> listaCabeceras = new ArrayList<Cabecera>();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml.toString())));
System.out.println("Root element: " + document.getDocumentElement().getNodeName());
NodeList nList = document.getElementsByTagName("cabecera");
for(int i = 0; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
System.out.println("Current Element: " + nNode.getNodeName());
Element element = (Element) nNode;
System.out.println("id: " + element.getElementsByTagName("id").item(0).getTextContent());
System.out.println("Tipo de mensaje: " + element.getElementsByTagName("tipoMensaje").item(0).getTextContent());
System.out.println("Fecha de Envio: " + element.getElementsByTagName("fechaEnvio").item(0).getTextContent());
Cabecera cabecera = new Cabecera();
cabecera.setId(Integer.parseInt(element.getElementsByTagName("id").item(0).getTextContent()));
cabecera.setTipoMensaje(Integer.parseInt(element.getElementsByTagName("tipoMensaje").item(0).getTextContent()));
//cabecera.getDatos().setFechaEnvio(element.getElementsByTagName("fechaEnvio").item(0).getTextContent());
listaCabeceras.add(cabecera);
我想知道如何将 fechaEnvio 这样的重复标签映射到我的 Java 对象。我使用 Java 8 版本,他们目前不让我使用更高版本
谢谢。
将 XML 重复标签映射到 Java 对象
你可以这样做:
Node datosNode = element.getElementsByTagName("datos").item(0);
Element elementDatos = (Element) datosNode;
NodeList fechaEnvioList = elementDatos.getElementsByTagName("fechaEnvio");
List<String> data = new ArrayList<>();
for (i = 0; i < fechaEnvioList.getLength(); i++) {
data.add(fechaEnvioList.item(i).getTextContent());
}
cabecera.getDatos().setFechaEnvio(data);
listaCabeceras.add(cabecera);