xml
參考地址:
http://jianlee.ylinux.org/Computer/C/libxml.html
執行個體:
/*
* =====================================================================================
*
* Filename: xml.c
*
* Description:
*
* Version: 1.0
* Created: 07/07/2011 11:47:54 AM
* Revision: none
* Compiler: gcc
*
* Author: kangle.wang (mn), wangkangluo1@gmail.com
* Company: APE-TECH
*
* =====================================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main (int argc, char **argv)
{
xmlDocPtr pdoc = NULL;
xmlNodePtr proot_node = NULL,pnode = NULL,pnode1 = NULL;
// 建立一個新文檔並設定 root 節點
// 一個 XML 檔案只有一個 root 節點
pdoc = xmlNewDoc (BAD_CAST "1.0");
proot_node = xmlNewNode (NULL, BAD_CAST "根節點");
xmlNewProp (proot_node, BAD_CAST "版本", BAD_CAST "1.0");
xmlDocSetRootElement (pdoc, proot_node);
pnode = xmlNewNode (NULL, BAD_CAST "子節點1");
// 建立上面 pnode 的子節點
xmlNewChild (pnode, NULL, BAD_CAST "子子節點1", BAD_CAST "資訊");
// 添加子節點到 root 節點
xmlAddChild (proot_node, pnode);
pnode1 = xmlNewNode (NULL, BAD_CAST "子子節點1");
xmlAddChild (pnode, pnode1);
xmlAddChild (pnode1,xmlNewText (BAD_CAST "這是更低的節點,子子子節點1"));
// 還可以這樣直接建立一個子節點到 root 節點上
xmlNewTextChild (proot_node, NULL, BAD_CAST "子節點2", BAD_CAST "子節點2的內容");
xmlNewTextChild (proot_node, NULL, BAD_CAST "子節點3", BAD_CAST "子節點3的內容");
// 儲存 xml 為檔案,如果沒有給出檔案名稱參數,就輸出到標準輸出
xmlSaveFormatFileEnc (argc > 1 ? argv[1]:"-", pdoc, "UTF-8", 1);
// 釋放資源
xmlFreeDoc (pdoc);
xmlCleanupParser ();
xmlMemoryDump ();
return 0;
}
編譯:gcc -g -Wall -O0 xml.c -o xml -I /usr/include/libxml2 -lxml2
運行:./xml test.xml
結果:
<?xml version="1.0" encoding="UTF-8"?>
<根節點 版本="1.0">
<子節點1>
<子子節點1>資訊</子子節點1>
<子子節點1>這是更低的節點,子子子節點1</子子節點1>
</子節點1>
<子節點2>子節點2的內容</子節點2>
<子節點3>子節點3的內容</子節點3>
</根節點>