Solved

Adding attribute to a parent element

Posted on 2010-11-30
6
960 Views
Last Modified: 2012-08-13
Hi,

I am using libxml2 to generate XML files. In the attached code, I am expecting output to be like:

<TAG_A ATTR_A1="Val1"  ATTR_A2="Val3">
      <TAG_B ATTR_B="Val2"/>
</TAG_A>

But it is not able to add attribute to the parent, and is giving output as:

<TAG_A ATTR_A1="Val1">
      <TAG_B ATTR_B="Val2"/>
</TAG_A>

That is, ATTR_A2 is missing for the element TAG_A. Is there any other API/work around to solve this problem?
#include <libxml/xmlwriter.h>

int main(int argc, char *argv[])
{
    xmlTextWriterPtr writer;
    writer =xmlNewTextWriterFilename("test.xml", 0);
    xmlTextWriterStartElement(writer, "TAG_A");
    xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "ATTR_A1", "Val1");
    xmlTextWriterStartElement(writer, "TAG_B");
    xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "ATTR_B", "Val2");

    xmlTextWriterEndElement(writer);
    xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "ATTR_A2", "Val3");
    xmlTextWriterEndElement(writer);
    xmlFreeTextWriter(writer);
}

Open in new window

0
Comment
Question by:Harisha M G
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
6 Comments
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 34238775
Try using
xmlTextWriterStartAttribute();

have a look at this:
http://xmlsoft.org/html/libxml-xmlwriter.html
0
 
LVL 37

Author Comment

by:Harisha M G
ID: 34239078
I tried that function this way, but it is not working:
#include <libxml/xmlwriter.h>

int main(int argc, char *argv[])
{
    xmlTextWriterPtr writer;
    writer =xmlNewTextWriterFilename("test.xml", 0);
    xmlTextWriterStartElement(writer, "TAG_A");
    xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "ATTR_A1", "Val1");
    xmlTextWriterStartElement(writer, "TAG_B");
    xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "ATTR_B", "Val2");

    xmlTextWriterEndElement(writer);
    xmlTextWriterStartAttribute(writer, BAD_CAST "ATTR_A2");
    xmlTextWriterEndElement(writer);
    xmlFreeTextWriter(writer);
}

Open in new window

0
 
LVL 37

Accepted Solution

by:
Harisha M G earned 0 total points
ID: 34775871
I found that it can not be done.
0
 
LVL 37

Author Comment

by:Harisha M G
ID: 34775895
There is not solution for this. Answer is "it can't be done", as I have posted. Please accept my comment solution and make it PAQ
0
 
LVL 37

Author Closing Comment

by:Harisha M G
ID: 34829979
I found through practical experience that it can't be done
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
Create a Windows 10 custom Image with custom task bar and custom start menu using XML for deployment.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.

724 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question