xml2c man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

xml2c(1)							      xml2c(1)

NAME
       xml2c - convert an XML file into C struct/string declarations

SYNOPSIS
       xml2c xmlfile

DESCRIPTION
       xml2c reads in an XML file and produces equivalent C source code, suit‐
       able for #including in your program.  The C version is probably	easier
       deal  with in your code.	 You don't have to read and parse the XML file
       and then look for the nodes you want; instead you just loop  through  a
       bunch  of  structs.   Or	 maybe you just don't want to distribute extra
       files with your app, and would rather build them into the executable.

       Example input:
       <?xml version="1.0" encoding="utf-8" ?>
       <list>
	 <item id="1" value="17">this item</item>
	 <item id="2" value="23">that item</item>
	 <item id="3" value="42">the other item</item>
       </list>

       Example output:
       % xml2c sample.xml
       struct _item {
	   char* id;
	   char* value;
	   char* TEXT;
	   };
       struct _list {
	   struct _item item[3];
	   int N_item;
	   };
       static struct _list list = {
	   item: { {
	       id: "1",
	       value: "17",
	       TEXT: "this item",
	       }, {
	       id: "2",
	       value: "23",
	       TEXT: "that item",
	       }, {
	       id: "3",
	       value: "42",
	       TEXT: "the other item",
	       } },
	   N_item: 3,
	   };

PROBLEMS
       xml2c should be able to produce output for any valid  XML  input	 file.
       However,	 there	are  some valid XML inputs for which the C output will
       not compile.  For example, if there are XML elements with the same name
       but  in different contexts, xml2c may not detect that they are the same
       and will produce two different struct definitions with the  same	 name.
       That  will  result  in a C compiler error, even if the two structs have
       the exact same fields:
       % cat bogus.xml
       <?xml version="1.0" encoding="utf-8" ?>
       <foo>
	 <item>this item</item>
	 <bar>
	   <item>that item</item>
	 </bar>
       </foo>
       % xml2c bogus.xml > bogus.c
       % cat bogus.c
       struct _item {
	   char* TEXT;
	   };
       struct _item {
	   char* TEXT;
	   };
       struct _bar {
	   struct _item item;
	   int N_item;
	   };
       struct _foo {
	   struct _item item;
	   int N_item;
	   struct _bar bar;
	   int N_bar;
	   };
       static struct _foo foo = {
	   item: {
	       TEXT: "this item",
	       },
	   N_item: 1,
	   bar: {
	       item: {
		   TEXT: "that item",
		   },
	       N_item: 1,
	       },
	   N_bar: 1,
	   };
       % gcc bogus.c
       bogus.c:4: redefinition of `struct _item'

       Another case that can result  in	 C  compiler  errors  is  if  you  use
       #include	 to  bring  multiple xml2c result files into a single .c file.
       If two or more of the XML files have elements with the same name,  then
       the  result  files  will have multiple struct definitions with the same
       name, and again that's a compiler error.

AUTHOR
       Copyright � 2011	 by  Jef  Poskanzer  <jef@mail.acme.com>.  All	rights
       reserved.

			       15 September 2011		      xml2c(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net