Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法在给定的xml文件libxml2中正确添加子节点_C++_C_Xml_Unix_Libxml2 - Fatal编程技术网

C++ 无法在给定的xml文件libxml2中正确添加子节点

C++ 无法在给定的xml文件libxml2中正确添加子节点,c++,c,xml,unix,libxml2,C++,C,Xml,Unix,Libxml2,我正在做的是读取一个xml文件,并尝试向给定的xml文件添加一个子节点。但问题是,它没有正确地显示在文件中。下面是代码: xmlDocPtr doc; xmlNodePtr nodeptr=NULL , node = NULL , node_child =NULL; doc = xmlParseFile("Mainfile.xml"); if (doc == NULL ) { fprintf(stderr,"Document not parsed successfully. \n"); retu

我正在做的是读取一个xml文件,并尝试向给定的xml文件添加一个子节点。但问题是,它没有正确地显示在文件中。下面是代码:

xmlDocPtr doc;
xmlNodePtr nodeptr=NULL , node = NULL , node_child =NULL;
doc = xmlParseFile("Mainfile.xml");
if (doc == NULL ) {
fprintf(stderr,"Document not parsed successfully. \n");
return;
}
nodeptr = xmlDocGetRootElement(doc);
if (nodeptr == NULL) {
fprintf(stderr,"empty document\n");
xmlFreeDoc(doc); 
return;
}
if (xmlStrcmp(nodeptr->name, (const xmlChar *) "story")) {
fprintf(stderr,"document of the wrong type, root node != story");
xmlFreeDoc(doc);
return;
}

node = xmlNewNode( NULL, BAD_CAST "Account" );
xmlNewProp(node, BAD_CAST "id", BAD_CAST "A001");
xmlAddChild(nodeptr , node);

node_child = xmlNewChild(node, NULL, BAD_CAST "Country",BAD_CAST "US");
xmlAddChild(node,node_child);
xmlAddChild(nodeptr , node);


node_child = xmlNewChild(node, NULL, BAD_CAST "City", BAD_CAST "ABC");
xmlAddChild(node,node_child);
xmlAddChild(nodeptr , node);

node_child = xmlNewChild(node, NULL, BAD_CAST "ZIP",BAD_CAST "34040");
xmlAddChild(node,node_child);
xmlAddChild(nodeptr , node);

xmlSaveFile("Mainfile.xml", doc);
xmlFree(doc);  
并且给出了给定xml文件的结构

< ?xml version="1.0"? >  
< Project >  
       < author >John Fleck< /author >  
       < datewritten >June 2, 2002< /datewritten >  
       < keyword >example keyword< /keyword >  
       < Account id = "A000" >  
           < Country >UK< /Country >  
           < City >XYZ< /City >  
           < Zip >67688< /Zip >  
       < /Account >  
< /Project >  


John Fleck
2002年6月2日
示例关键字

英国
XYZ
67688


在使用我的代码之后,xml以下面的格式显示内容

< ?xml version="1.0"? >   
< Project >  
       < author >John Fleck< /author >  
       < datewritten >June 2, 2002</datewritten>  
       < keyword >example keyword< /keyword >    
       < Account id = "A000" >   
           < Country >UK< /Country >    
           < City >XYZ< /City >    
           < Zip >67688< /Zip >    
        < /Account >  
        < Account id = "A001" >< Country >US< /Country >< City >ABC< /City >< Zip >34040< /Zip >< /Account >< /Project >    


John Fleck
2002年6月2日
示例关键字

英国
XYZ
67688

美国ABC34040
主要问题是它没有添加具有适当缩进的子节点


有人能告诉我我做错了什么吗

XML输出的结构没有通过,但要获得正确的缩进,请尝试使用1作为
格式。在使用整个XML之前,还可以调用
xmlkepblanksdefault(0)
,我相信它应该提供您想要的缩进(实际上无法看到您要查找的内容)