いろんなところで使われているlibxmlについて扱う。
The XML C parser and toolkit of Gnome
なぜlibxml"2"なのか・・・。
http://www.fifi.org/doc/libxml1/README
まあ、現在はlibxml2となっているのでしょうがない・・・。
今回は、xmlNewTextReaderFilenameでXMLファイルを読み込んでリーダを生成する。
まずはインストール。
$ sudo yum install libxml2-devel [sudo] bg1 のパスワード: メタデータの期限切れの最終確認: 0:07:13 時間前の xxxx年xx月xx日 xx時xx分xx秒 に実施しました。 依存関係が解決しました。 ================================================================================ パッケージ アーキテクチャー バージョン リポジトリ サイズ ================================================================================ インストール: libxml2-devel x86_64 2.9.8-5.fc29 updates 1.0 M アップグレード: libxml2 x86_64 2.9.8-5.fc29 updates 647 k python3-libxml2 x86_64 2.9.8-5.fc29 updates 223 k 依存関係をインストール中: xz-devel x86_64 5.2.4-3.fc29 fedora 56 k トランザクションの概要 ================================================================================ インストール 2 パッケージ アップグレード 2 パッケージ ダウンロードサイズの合計: 1.9 M これでよろしいですか? [y/N]: y パッケージのダウンロード中です: (1/4): xz-devel-5.2.4-3.fc29.x86_64.rpm 25 kB/s | 56 kB 00:02 (2/4): libxml2-2.9.8-5.fc29.x86_64.rpm 279 kB/s | 647 kB 00:02 (3/4): libxml2-devel-2.9.8-5.fc29.x86_64.rpm 363 kB/s | 1.0 MB 00:02 (4/4): python3-libxml2-2.9.8-5.fc29.x86_64.rpm 315 kB/s | 223 kB 00:00 -------------------------------------------------------------------------------- 合計 343 kB/s | 1.9 MB 00:05 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 Upgrade: libxml2-2.9.8-5.fc29.x86_64 アップグレード中 : libxml2-2.9.8-5.fc29.x86_64 1/6 Upgrade: libxml2-2.9.8-5.fc29.x86_64 Installed: xz-devel-5.2.4-3.fc29.x86_64 インストール中 : xz-devel-5.2.4-3.fc29.x86_64 2/6 Installed: xz-devel-5.2.4-3.fc29.x86_64 Installed: libxml2-devel-2.9.8-5.fc29.x86_64 インストール中 : libxml2-devel-2.9.8-5.fc29.x86_64 3/6 Installed: libxml2-devel-2.9.8-5.fc29.x86_64 Upgrade: python3-libxml2-2.9.8-5.fc29.x86_64 アップグレード中 : python3-libxml2-2.9.8-5.fc29.x86_64 4/6 Upgrade: python3-libxml2-2.9.8-5.fc29.x86_64 Upgraded: python3-libxml2-2.9.8-4.fc29.x86_64 整理 : python3-libxml2-2.9.8-4.fc29.x86_64 5/6 Upgraded: python3-libxml2-2.9.8-4.fc29.x86_64 Upgraded: libxml2-2.9.8-4.fc29.x86_64 整理 : libxml2-2.9.8-4.fc29.x86_64 6/6 Upgraded: libxml2-2.9.8-4.fc29.x86_64 scriptletの実行中: libxml2-2.9.8-4.fc29.x86_64 6/6 検証 : libxml2-devel-2.9.8-5.fc29.x86_64 1/6 検証 : xz-devel-5.2.4-3.fc29.x86_64 2/6 検証 : libxml2-2.9.8-5.fc29.x86_64 3/6 検証 : libxml2-2.9.8-4.fc29.x86_64 4/6 検証 : python3-libxml2-2.9.8-5.fc29.x86_64 5/6 検証 : python3-libxml2-2.9.8-4.fc29.x86_64 6/6 アップグレード済み: libxml2-2.9.8-5.fc29.x86_64 python3-libxml2-2.9.8-5.fc29.x86_64 インストール済み: libxml2-devel-2.9.8-5.fc29.x86_64 xz-devel-5.2.4-3.fc29.x86_64 完了しました! $
test.xmlを作成する。
<?xml version="1.0" encoding="UTF-8"?> <top> <listitem> <itemname> First </itemname> <itemnumber> 10 </itemnumber> </listitem> <listitem> <itemname> Second </itemname> <itemnumber> 20 </itemnumber> </listitem> </top>
こんな感じ・・・。
main.cで、
読み込めたらポインタが返ってくるのでそれを出力。
$ ls main main.c test.xml $ cat test.xml <?xml version="1.0" encoding="UTF-8"?> <top> <listitem> <itemname> First </itemname> <itemnumber> 10 </itemnumber> </listitem> <listitem> <itemname> Second </itemname> <itemnumber> 20 </itemnumber> </listitem> </top> $ gcc main.c -o main -I/usr/include/libxml2 -lxml2 $ ./main reader = 0x00cac980 $
読み込みは出来たみたい。