首頁 >Java >將 XML 重複標記對應到 Java 對象

將 XML 重複標記對應到 Java 對象

WBOY
WBOY轉載
2024-02-13 18:20:09712瀏覽

php小編蘋果在本文將向您介紹如何將XML重複標記對應到Java物件。 XML是一種常用的資料交換格式,而Java物件是我們在程式設計中經常使用的資料結構。將XML重複標記對應到Java物件可以幫助我們更方便地處理和操作資料。本文將為您詳細解析這個過程,並提供實際範例來幫助您更好地理解。讓我們一起來探索這個有趣又實用的主題吧!

問題內容

我有下一個 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);

在 cabecera 類別

private DatosRecepcion datos = new DatosRecepcion();

以上是將 XML 重複標記對應到 Java 對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除