ブログの説明
パソコンやアンドロイドなどの情報を収集しまとめているブログです。

記事内に張られている画像はクリックすると見やすいサイズの画像が表示されるようになっています。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
アクセスカウンター
検索フォーム
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

簡単なXMLパーサーサンプル

簡単なXMLのパーサーのサンプルです。
複雑なことはできないので注意してださい。
このサンプルで可能なことは
<tag>data</tag>
というデータがあった時に"tag"を指定すると"data"という文字列を抜き出せるだけです。

まずC言語版です。
タグの長さに制限があるので注意してください。

int xmlParse( char *sorce , char *tag , char *data)
{
     char tagStart[64];
     char tagEnd[64];
     int dataLen;
     sprintf( tagStart , "<%s>" , tag );
     sprintf( tagEnd , "</%s>" , tag );

     cout << sorce << endl;
     cout << tag << endl;
     cout << tagStart << endl;
     cout << tagEnd << endl;

     /////////////////変数初期化完了
     cout << strlen( sorce ) << endl;
     //データの長さを計算
     dataLen = strlen( strstr( sorce , tagStart ) + strlen(tagStart) ) - strlen( strstr( sorce , tagEnd ) ) ;
     cout << dataLen << endl;


     memset( data , '\0' , strlen(sorce)+1 ); //ソースと同じ長さに/0を入れておく
     memcpy( data , strstr( sorce , tagStart ) + strlen(tagStart) , dataLen);


     cout << data << endl;
     return 0;
}
次にC++版です
C++のヘッダーが必要ですが、タグの長さに制限がありません。
#include <iostream>
#include <string>
using namespace std;

int xmlParse( string& sorce , string tag , string& data )
{
     string tagStart;
     string tagEnd;
     int dataLen;
     //変数の初期化
     tagStart = "<" + tag + ">" ;
     tagEnd = "</" + tag + ">" ;

     //データの長さを計算
     dataLen = sorce.find( tagEnd )-sorce.find(tagStart ) - tagStart.size();

     //抜きだす
     int startPos = sorce.find( tagStart ) + tagStart.size();
     data = sorce.substr( startPos , dataLen );

     return 0;
}

COMMENT

EDIT COMMENT

非公開コメント

最新トラックバック
ブロとも申請フォーム
QLOOKアクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。