簡體   English   中英

在Java中使用Multiplle子節點創建XML文件

[英]Create XML File with multiplle child nodes in Java

我想要創建如下所示的XML文件-當我僅創建一個OrderDetails子級時,我已經將其輸出到磁盤了-現在,我想創建2個(所以最終我可以擁有一個帶有一個批處理標頭和多個訂單詳細信息的XML文件。

<?xml version="1.0" encoding="UTF-8"?>
<BatchOrders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <BatchHeader>
     <Provider>123456789</Provider>
     <Contact>ABC@abc.com</Contact>
  </BatchHeader>
   <OrderDetails>
     <Number>0456789</Number>
     <YourReference>tc1</YourReference>
     <DeliveryDate>23-08-2012</DeliveryDate>
     <RetailerID>AAA</RetailerID>   
  </OrderDetails>
   <OrderDetails>
     <Number>1234</Number>
     <YourReference>tc2</YourReference>
     <DeliveryDate>23-08-2013</DeliveryDate>
     <RetailerID>BBB</RetailerID>   
  </OrderDetails>
  </BatchOrders>

因此,我有一個名為OrderDetails的類,它具有屬性和get / setter。 我也有一個寫XML Header然后是OrderDetails的類-如下。

OrderHeader header = new OrderHeader();

header.setProvider("123456789");
//rest of header setting done

OrderWriter writer = new OrderWriter(orderWriter);
writer.Initialise(header);

OrderDetails[] orderdetails = new OrderDetails[3];


for(int i = 0; i < orderdetails.length; i++)
{
    orderdetails[i] = new OrderDetails();
    orderdetails[i].setDirectoryNumber("0456789" + i);
    //rest of sets done

    writer.writeNext(orderdetails[i]);
}

writer.close();

最后,下面是我的作家類-當我只有一個訂單詳細信息時,它可以正常工作,並以正確的XML格式打印文件。 當我嘗試創建多個OrderDetails子節點的代碼時-它只是給我第一筆訂單詳細信息的記錄,並在一個長字符串中,因此格式不正確,XML格式-有人能看到我在這里缺少的東西嗎?

  public void Initialise(OrderHeader header) throws Exception 
    {
        Element batchOrders = new Element("BatchOrders");

        document.setRootElement(batchOrders);

        Element batchHeader = new Element("BatchHeader");

        batchHeader.addContent(new Element("ServiceProvider").setText(header.getServiceProvider()));
        //more header sets are done...

        document.getRootElement().addContent(batchHeader);

    }

    public void close() throws Exception { writer.close(); }

    public void writeNext(OrderDetails record) throws Exception 
    {

        Element orderDetails = new Element("OrderDetails");

        if(record.getNumber() != null)
        {
            orderDetails.addContent(new Element("Number").setText(record.getNumber()));
        }
        //More sets are done....


        document.getRootElement().addContent(orderDetails);

        outputter.getFormat().setOmitDeclaration(true);
        outputter.getFormat().setOmitEncoding(true);

        outputter.output(document,writer); 

    }

在方法writeNext()中,您在添加orderDetails內容之后立即使用輸出程序輸出文檔。 我不確定您的輸出程序會做什么,但是我認為您應該輸出,直到將所有orderDetails放入文檔中為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM