2012-11-16 2 views
1

XML 파일을 만들고 싶습니다. OrderDetails 하위 노드를 하나 만들면 디스크로 출력됩니다. 이제는 2를 만들려고합니다. 그것은 하나 batchheader 여러 주문 정보가있는 XML 파일. 그래서Java에서 multiplle 자식 노드를 사용하여 XML 파일 만들기

<?xml version="1.0" encoding="UTF-8"?> 
<BatchOrders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <BatchHeader> 
    <Provider>123456789</Provider> 
    <Contact>[email protected]</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> 

i를 propeties과 GET/setter를 가진 클래스라는 OrderDetails의가. 나는 또한 다음은 XML 헤더 등을 기록하는 클래스가 있습니다 주문 세부 정보 - 아래 내용을 참조하십시오.

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(); 

마지막으로 아래에 있습니다. riter 클래스 - 하나의 주문 세부 사항 만 있으면 제대로 작동하고 올바른 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); 

    } 
+0

이 게시물에서보세요 : http://stackoverflow.com/questions/4142046/create-xml-file-using-java –

답변

1

writeNext() 메서드에서는 orderDetails 내용을 추가 한 직후 출력기를 사용하여 문서를 출력합니다. 나는 당신의 outputter가 무엇인지 모르겠지만, 당신이 문서에 모든 orderDetails를 넣을 때까지 출력해야한다고 생각합니다.

+0

감사합니다 -했다 깨달았 다시 찾고 있음 -의 doOutput라는 또 다른 방법으로 변경() 그리고 그것은 작동합니다. –