Libxml2: Difference between revisions

From 탱이의 잡동사니
Jump to navigation Jump to search
(Created page with "== Overview == Libxml2 사용법 정리 == Examples == === tree_navigator === 원문은 이곳<ref>http://www.xmlsoft.org/examples/tree1.c</ref>에서 확인할 수 있다. <...")
 
No edit summary
Line 1: Line 1:
== Overview ==
== Overview ==
Libxml2 사용법 정리
Libxml2 사용법 정리
== Installation ==
On debian/ubuntu
<source lang=bash>
$ sudo apt-get install libxml2-dev
</source>
On CentOS/RHEL
<source lang=bash>
$ sudo yum install libxml2-devel
</source>
== Complie options ==
libxml2 를 이용한 프로그램을 컴파일하기 위해서는 다음의 옵션이 컴파일 옵션에 포함되어야 한다.
<pre>
complie option
`xml2-config --cflags`
link option
`xml2-config --libs`
</pre>


== Examples ==
== Examples ==

Revision as of 09:42, 31 July 2015

Overview

Libxml2 사용법 정리

Installation

On debian/ubuntu <source lang=bash> $ sudo apt-get install libxml2-dev </source>

On CentOS/RHEL <source lang=bash> $ sudo yum install libxml2-devel </source>

Complie options

libxml2 를 이용한 프로그램을 컴파일하기 위해서는 다음의 옵션이 컴파일 옵션에 포함되어야 한다.

complie option
`xml2-config --cflags`

link option
`xml2-config --libs`

Examples

tree_navigator

원문은 이곳<ref>http://www.xmlsoft.org/examples/tree1.c</ref>에서 확인할 수 있다. <source lang=c>

  1. include <stdio.h>
  2. include <libxml/parser.h>
  3. include <libxml/tree.h>
  1. include <stdio.h>
  2. include <libxml/parser.h>
  3. include <libxml/tree.h>
  1. ifdef LIBXML_TREE_ENABLED

/*

*To compile this file using gcc you can type
*gcc `xml2-config --cflags --libs` -o xmlexample libxml2-example.c
*/

/**

* print_element_names:
* @a_node: the initial xml node to consider.
*
* Prints the names of the all the xml elements
* that are siblings or children of a given xml node.
*/

static void print_element_names(xmlNode * a_node) {

   xmlNode *cur_node = NULL;
   for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
       printf("Node type. type[%d]\n", cur_node->type);
       if (cur_node->type == XML_ELEMENT_NODE) {
           printf("node type: Element, name[%s], content[%s]\n", cur_node->name, cur_node->content);
       }
       else if(cur_node->type == XML_TEXT_NODE)
       {
           printf("text[%s]\n", cur_node->content);
       }
       print_element_names(cur_node->children);
   }

}


/**

* Simple example to parse a file called "file.xml", 
* walk down the DOM, and print the name of the 
* xml elements nodes.
*/

int main(int argc, char **argv) {

   xmlDoc *doc = NULL;
   xmlNode *root_element = NULL;
   if (argc != 2)
       return(1);
   /*
    * this initialize the library and check potential ABI mismatches
    * between the version it was compiled for and the actual shared
    * library used.
    */
   LIBXML_TEST_VERSION
   /*parse the file and get the DOM */
   doc = xmlReadFile(argv[1], NULL, 0);
   if (doc == NULL) {
       printf("error: could not parse file %s\n", argv[1]);
   }
   /*Get the root element node */
   root_element = xmlDocGetRootElement(doc);
   print_element_names(root_element);
   /*free the document */
   xmlFreeDoc(doc);
   /*
    *Free the global variables that may
    *have been allocated by the parser.
    */
   xmlCleanupParser();
   return 0;

}

  1. else

int main(void) {

   fprintf(stderr, "Tree support not compiled in\n");
   exit(1);

}

  1. endif

</source>

See also

References

<references />