Solved

Adding attribute to a parent element

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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
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…
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.

757 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now