2014-09-08 3 views
2

코멘트를 잃지 않고 XML 파일을 비 정렬 화 및 마샬링하는 방법은 무엇입니까? JAXB를 사용하는 방법이 있습니까? 다음을 사용하여 예제를 시도했습니다 link 하지만 나에게서 작동하지 않습니다.JAXB에서 XML 주석을 보존하는 방법은 무엇입니까?

<customer> 
     <address> 
    <!-- comments line 1 --> 
      <street>1 Billing Street</street> 
     </address> 
     <address> 
    <!-- comments line 2--> 
     <street>2 Shipping Road</street> 
     </address> 
</customer> 

나는, 위의 XML을 비 정렬 화하여 의견 다음 잃지 않고 다시 마샬 해 새로운 주소를 추가 할 수 있습니다.

<!-- comments line 1 --> 
    <!-- comments line 2--> 
+0

정확히 무엇이 문제입니까? – Vihar

+0

XML에서 주석을 잃어 가고 있습니다. – Hareesh

+0

@Hareesh 문제의 세부 사항이나 예제를 추가 할 수 있습니까? .. 질문이 명확하지 않습니다. – Xstian

답변

0

JAXB를 StAX와 함께 사용하여 후미 주석에 액세스 할 수 있습니다.

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Unmarshaller; 
import javax.xml.stream.XMLInputFactory; 
import javax.xml.stream.XMLStreamConstants; 
import javax.xml.stream.XMLStreamReader; 
import javax.xml.transform.stream.StreamSource; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     XMLInputFactory xif = XMLInputFactory.newFactory(); 
     StreamSource source = new StreamSource("pathOfYourXML/input.xml"); 
     XMLStreamReader xsr = xif.createXMLStreamReader(source); 

     JAXBContext jc = JAXBContext.newInstance(Customer.class); 
     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     Customer xml = (Customer) unmarshaller.unmarshal(xsr); 

     while(xsr.hasNext()) { 
      if(xsr.getEventType() == XMLStreamConstants.COMMENT) { 
       System.out.println(xsr.getText()); 
      } 
      xsr.next(); 
     } 
    } 

} 
+0

가져 오기를 추가 했으므로 모든 클래스가이 두 (+ java.lang) 패키지에 있다고 가정합니다. 'Xml' 클래스는 어디에 있습니까? – laune

+0

Xml이 고객입니다. 예제를 단순화하기 위해 "Xml"이라고 부릅니다. – Xstian

+0

@Hareesh 사용 된 모든 가져 오기로 답을 편집했습니다. – Xstian

0

아마도 고객 주소의 (데이터) 모델을 적용/확장하는 것이 더 쉽습니다.

<customer> 
    <billing-address> 
    <street></street> 
    <street></street> 
    <city></city> 
    </billing-address> 
    <shipping-address> 
    <street></street> 
    <street></street> 
    <street></street> 
    <city></city> 
    </shipping-address> 
</customer> 

의미가없는 의견 '숨겨진'모델에이 방법.

+0

코멘트는 고객과 관련된 모든 값을 나타내지 않습니다. 이 고객이 추가 된 이유를 지정합니다. 쉬운 이해를 위해서. – Hareesh

관련 문제