2012-03-23 2 views
3

XML로 객체를 직렬화하려고 했으므로 TinyXML을 얻었습니다. 그러나 나는 더 새로운 TinyXML2와 함께 갔다. 문제는 어디서나 튜토리얼을 찾을 수 없으므로 문서를 읽은 것입니다. 그러나, 나는 문서에 요소를 추가하는 것으로 붙어있는 것 같다.TinyXML2/C++ - 요소 삽입

누군가 내 코드에 어떤 문제가 있다고 말할 수 있습니까?

<?xml version="1.0" ?> 
<Hello>World</Hello> 

여기 내 main() 방법입니다 :

#include "tinyxml2/tinyxml2.h" 
using namespace tinyxml2; 

int main (int argc, char * const argv[]) 
{ 
    XMLDocument doc; 
    if (doc.LoadFile("demo.xml") == XML_SUCCESS) 
    { 
     XMLNode *node = doc.NewElement("foo"); 
     doc.InsertEndChild(node); 
     doc.SaveFile("demo2.xml"); 
    } 
} 

그리고 마지막으로, 여기에 demo2.xml 파일입니다 :

여기 내 demo.xml 파일 내용의

<?xml version="1.0" ?> 
<Hello>World</Hello> 

<foo/> 

푸는 다음과 같이한다 : <foo></foo>

그러나 어떤 이유에서든 그렇지 않습니다. 왜 그 이유를 설명 할 수 있습니까?

+0

당신이 당신의 XML 파일이 성공적으로 쓰기에 같이 무엇을 원하는가? – user1055604

+0

@ user1055604 나는 그것을 지적 해 주셔서 Q를 편집했습니다! – rcplusplus

+3

당신은 ''과' '은 동등한 것을 알고 계십니까? 당신의 노드에 텍스트를 추가하자마자 tinyxml은 나중에 바뀔 것이다. – mkaes

답변

4

사실, 그렇게 보이면 안됩니다. 귀하의 <foo>...</foo> 태그 사이에 어떤 데이터도 넣지 마십시오. 따라서 <foo/> (슬래시에주의)은 가지고있는 것을 정확하게 표현한 것입니다. 만약 사이

4

, 당신은 다음과 같이 코드를 수정할 수 있습니다 :

XMLElement *node = doc.NewElement("foo"); 
XMLText *text = doc.NewText("Another Hello!");  
node->LinkEndChild(text);  
doc.LinkEndChild(node); 

doc.SaveFile("demo2.xml");