Hi, I was using the ezxml library to read and write xml files in freertos os. I read correctly, but when I write new tags I don't get the format I would like.
The original XML file is, for example:
<Users> <user> <name>admin</name> <level>admin</level> <pass>123456</pass> </user> <user> <name>installer1</name> <level>installer</level> <pass>123456</pass> </user> <user> <name>maintenance1</name> <level>maintenance</level> <pass>123456</pass> </user></Users>
My program to write a new tag is as follows:
users = ezxml_parse_file(CFG_USERS_FILENAME); user = ezxml_add_child(users, "user", 0); node = ezxml_add_child(user, "name", 0); ezxml_set_txt(node, "test"); node = ezxml_add_child(user, "level", 0); ezxml_set_txt(node, "admin"); node = ezxml_add_child(user, "pass", 0); ezxml_set_txt(node, "123489"); s = ezxml_toxml(users); ezxml_free(users); if ((fd = open("A:/CFG/test.xml", O_WRONLY )) >= 0) { write(fd, s, strlen(s)); close(fd); } free (s);
When I run it and save the xml with I get:
<Users> <user> <name>test</name> <level>admin</level> <pass>123489</pass> </user> <user> <name>installer1</name> <level>installer</level> <pass>123456</pass> </user> <user> <name>maintenance1</name> <level>maintenance</level> <pass>123456</pass> </user> </Users>
Without indentation or newlines.
How could I get the indentation and newlines? Am I doing something wrong? I would like to get this:
Could anybody help me?
Thanks in advance, zmlopez
Log in to post a comment.
Hi, I was using the ezxml library to read and write xml files in freertos os.
I read correctly, but when I write new tags I don't get the format I would like.
The original XML file is, for example:
<Users>
<user>
<name>admin</name>
<level>admin</level>
<pass>123456</pass>
</user>
<user>
<name>installer1</name>
<level>installer</level>
<pass>123456</pass>
</user>
<user>
<name>maintenance1</name>
<level>maintenance</level>
<pass>123456</pass>
</user></Users>
My program to write a new tag is as follows:
users = ezxml_parse_file(CFG_USERS_FILENAME);
user = ezxml_add_child(users, "user", 0);
node = ezxml_add_child(user, "name", 0);
ezxml_set_txt(node, "test");
node = ezxml_add_child(user, "level", 0);
ezxml_set_txt(node, "admin");
node = ezxml_add_child(user, "pass", 0);
ezxml_set_txt(node, "123489");
s = ezxml_toxml(users);
ezxml_free(users);
if ((fd = open("A:/CFG/test.xml", O_WRONLY )) >= 0)
{
write(fd, s, strlen(s));
close(fd);
}
free (s);
When I run it and save the xml with I get:
<Users>
<user> <name>test</name> <level>admin</level> <pass>123489</pass> </user>
<user>
<name>installer1</name>
<level>installer</level>
<pass>123456</pass>
</user>
<user>
<name>maintenance1</name>
<level>maintenance</level>
<pass>123456</pass>
</user>
</Users>
Without indentation or newlines.
How could I get the indentation and newlines?
Am I doing something wrong?
I would like to get this:
<Users>
<user>
<name>test</name>
<level>admin</level>
<pass>123489</pass>
</user>
<user>
<name>installer1</name>
<level>installer</level>
<pass>123456</pass>
</user>
<user>
<name>maintenance1</name>
<level>maintenance</level>
<pass>123456</pass>
</user>
</Users>
Could anybody help me?
Thanks in advance,
zmlopez