Solved

Adding attribute to a parent element

Posted on 2010-11-30
6
952 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
  • 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

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to useā€¦
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
The goal of this video is to provide viewers with basic examples to understand opening and writing to files in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.

786 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