2014-02-12 3 views
2

아파치 공리를 사용하여 XML 파일을 생성하는 데 도움을 주시기 바랍니다 아파치 공리를 사용하여, 하나의 부모와 두 개의 자식 태그있는 모든 XML 파일, 나는샘플 XML 파일 생성

OMFactory factory = OMAbstractFactory.getOMFactory(); 
OMNamespace ns1 = factory.createOMNamespace("bar","x"); 
OMElement root = factory.createOMElement("root",ns1); 
OMNamespace ns2 = root.declareNamespace("bar1","y"); 
OMElement elt1 = factory.createOMElement("foo",ns1); 
OMElement elt2 = factory.createOMElement("yuck",ns2); 
OMText txt1 = factory.createOMText(elt2,"blah"); 
elt2.addChild(txt1); 
elt1.addChild(elt2); 
root.addChild(elt1); 

어떻게 직렬화하는 방법 좀 도와주세요 다음 코드를 시도 루트 요소. 여기서 OMElment는 직렬화되지 않은 API 클래스입니다. 도와주세요.

답변

3
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.OutputStream; 

import javax.xml.stream.XMLStreamException; 

import org.apache.axiom.om.OMAbstractFactory; 
import org.apache.axiom.om.OMElement; 
import org.apache.axiom.om.OMFactory; 
import org.apache.axiom.om.OMNamespace; 
import org.apache.axiom.om.OMText; 


public class Example { 
    public static void main(String[] args) { 
     try { 
      OMFactory factory = OMAbstractFactory.getOMFactory(); 

      OMNamespace ns1 = factory.createOMNamespace("bar", "x"); 
      OMElement root = factory.createOMElement("root", ns1); 
      OMNamespace ns2 = root.declareNamespace("bar1", "y"); 

      OMElement elt1 = factory.createOMElement("foo", ns1); 
      OMElement elt2 = factory.createOMElement("yuck", ns2); 
      OMElement elt3 = factory.createOMElement("yuck2", ns2); 

      OMText txt1 = factory.createOMText(elt2, "blah"); 
      OMText txt2 = factory.createOMText(elt3, "blah-blah"); 

      elt2.addChild(txt1); 
      elt3.addChild(txt2); 
      elt1.addChild(elt2); 
      elt1.addChild(elt3); 

      root.addChild(elt1);  

      OutputStream outputStream = null; 
      try { 
       outputStream = new FileOutputStream("C:\\xml.xml"); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      root.serialize(outputStream); 

      root.serialize(System.out); 

     } catch (XMLStreamException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

콘솔 출력 :

<x:root xmlns:x="bar" xmlns:y="bar1"><x:foo><y:yuck>blah</y:yuck><y:yuck2>blah-blah</y:yuck2></x:foo></x:root>

직렬화 된 파일 : 자세한 내용

  • Axiom User Guide
  • 01

    <x:root xmlns:x="bar" xmlns:y="bar1"> 
        <x:foo> 
         <y:yuck>blah</y:yuck> 
         <y:yuck2>blah-blah</y:yuck2> 
        </x:foo> 
    </x:root>  
    

+0

고맙습니다. 저에게 맞습니다. 직렬화 된 파일에 루트 요소 문제가 설명되어 있습니다. – Shekkar

+0

반갑습니다. –