2012-05-06 3 views
6

에서 C++을 객체를 XML 문자열 표현으로 변환하는 간단한 방법을 찾고 있습니다. 이렇게하면 서버와 통신 할 수 있습니다. (나는 하나의 인스턴스 A를 생성하고이 B의 두 인스턴스를 가지고 있다고 가정)C++ 객체에서 XML 로의 통신

을 :

class A{ 
    string data1; 
    string data2; 
    string dataN; 
    list<B> bList; 
} 

class B{ 
    string moreData; 
} 

나는 다음과 같은 XML-표현을하고 싶습니다 :

예를 들어, 우리는 내가 객체가 있다고 가정 해 보자

<A> 
    <data1>content</data1> 
    <data2>content</data2> 
    <dataN>content</dataN> 
    <B> 
     <moreData>content</moreData> 
    </B>  
    <B> 
     <moreData>content</moreData> 
    </B> 
</A> 
+2

http://stackoverflow.com/questions/234724/how-to-serialize-in-c – m0skit0

+0

질문은 무엇입니까 :

이 질문은 몇 가지 주목할만한 링크와 기본적인 방법이있다? – Starkey

+0

@ m0skit0 그게 멋진 도서관이에요. 필자는 예제 [boost XML] (http://www.boost.org/doc/libs/1_36_0/libs/serialization/example/demo_xml.cpp)을 가져 왔지만 원하는 정보가 더 많은 XML을 출력합니다 (예 : 메타 데이터 항목에 해당하는 등) 내 질문에 게시 한 것과 같은 간단한 출력을 생성하는 방법이 있습니까? –

답변

3

설명하는 내용을 XML 데이터 바인딩이라고합니다. XSD 또는 DTD에서 C++ 코드를 생성하는 제품은 많으며 목록은 http://www.xmldatabinding.org/이고 자세한 내용은 http://www.rpbourret.com/xml/XMLDataBinding.htm입니다.

또한이 XML Data Binding example for C++을 살펴보면 예제 소스 스키마와 생성 된 코드가 표시됩니다.

스키마가 매우 기본적이고 생성기를 조정할 수있는 능력이 있다면 아마도 일부 오픈 소스 프로젝트가있을 것입니다. XML 표준에 바인딩하는 경우 대부분의 생성자의 한계에 맞춰 빠르게 실행됩니다. Liquid XML 생성기는 거의 모든 XSD 표준을 처리하지만 비용을 지불해야합니다.

2

그래서 포인터를 직렬화 할 방법이 없기 때문에 간단히 말해서 표준 방법이 없습니다. 항상 응용 프로그램 특정 것입니다.

그러나 자신 만의 클래스를 만들고 원하는대로 직렬화 할 수 있습니다.

xml 파서의 경우 this one을 사용해 보셨습니까? 매우 간단하고 효율적이며 배우기 쉽습니다. 나는 기본적으로 그걸 다 해냈다. 상업 라이센스를 요청할 수도 있습니다.