я с XML-файл следующим образом:Изменить значение атрибута в XML C++
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConfigData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MyData>
<FrontCamera>2</FrontCamera>
<RearCamera>8</RearCamera>
</MyData>
</ConfigData>
Мне нужно изменить значение атрибута RearCamera от значения 8 до 16. Я использую C++ и с libxml2 библиотеку Я пробовал как внизу, он не работал должным образом. Неужели я ошибаюсь?
xmlDoc* doc = NULL;
xmlNode* root_node = NULL;
xmlNode *child_node = NULL;
xmlNode *cur_node = NULL;
xmlNode *cur = NULL;
LIBXML_TEST_VERSION //!< Macro to check API for match with the DLL we are using
doc = xmlParseFile("ConfigFile.xml"); //!<parse the file and get the DOM
if (doc == NULL)
{
}
else
{
root_node = xmlDocGetRootElement(doc);
if(root_node != NULL)
{
child_node = root_node->children;
unsigned char* cValue;
int iHandedness = 0;
while(child_node!=NULL)
{
if(!xmlStrcmp(child_node->name,(const xmlChar *)"MyData"))
{
cur = child_node->children;
if(NULL!= cur)
{
for (cur_node = cur; cur_node; cur_node = cur_node->next)
{
if (cur_node->type == XML_ELEMENT_NODE)
{
if(!xmlStrcmp(cur_node->name,(const xmlChar *)"RearCamera"))
{
cur_node->children->content = (const xmlChar *)(16) ;
}
}
}
}
}
child_node = child_node->next;
}
}
xmlSaveFormatFile ("ConfigFile.xml", doc, 1);
xmlFreeDoc(doc); //!< free document
xmlCleanupParser();
}
Сохранить не происходит, код сброс происходит обратный след:
n __vfprintf_chk() from /lib/libc.so.6
#1 0xb5bb7028 in xmlGenericErrorDefaultFunc() from /usr/lib/libxml2.so.2
#2 0xb5bb6e6b in xmlReportError() from /usr/lib/libxml2.so.2
#3 0xb5bb839e in __xmlRaiseError() from /usr/lib/libxml2.so.2
#4 0xb5bb8507 in __xmlSimpleError() from /usr/lib/libxml2.so.2
#5 0xb5be3f81 in __xmlIOErr() from /usr/lib/libxml2.so.2
#6 0xb5be43d7 in xmlIOErr() from /usr/lib/libxml2.so.2
#7 0xb5be4841 in xmlFileOpenW() from /usr/lib/libxml2.so.2
#8 0xb5be7369 in __xmlOutputBufferCreateFilename() from /usr/lib/libxml2.so.2
#9 0xb5be7573 in xmlOutputBufferCreateFilename__internal_alias() from /usr/lib/libxml2.so.2
#10 0xb5c97912 in xmlSaveFormatFileEnc__internal_alias() from /usr/lib/libxml2.so.2
#11 0xb5c979f8 in xmlSaveFileEnc__internal_alias() from /usr/lib/libxml2.so.2
код заканчивается в файле savefile –
Что вы имеете в виду под «кодом» и «завершаете»? См. Ссылку на изменение атрибута; любой другой способ не определен. –