取得すべきデータサイズと取得しているデータサイズが合ってないせいで変なところで途切れているのかなー,と思っていろいろ頑張ってみた.
1つのノードが途切れてしまうようなサイズで送信されたデータを判別して,途切れたノードをちまちまと連結してやったら,まともな XML データを作れた.
元々こうしないといけなかったのかもしれないな.
HTTP プロトコルがいまいちわかってないのが大問題(^^;
前は XML データを取得しながら多種の parse も同時にやっていたけど,ややこしいので XML データを作ってから parse してファイル名とかを得る方法に変えた.
効率は落ちるけど,コードがすっきりする方が,やっぱりいいなー.
ただ,別の情報を得るために何度も parse するのはさすがに重いだろうから,何かしら考えないと.
D言語に SAX 方式の XML ライブラリなんて存在するのだろうか・・・.
- http://www.prowiki.org/wiki4d/wiki.cgi?AllLibraries/XmlLibraries
- http://www.dsource.org/projects/mango/
気軽に使えそうな tinyxml がいいかなーと思ったけど,メモリ上の char[] に入った改行なしの XML を parse する方法がわからんかった.
普通にそういう機能が用意されているが見つけられないのか,はたまた,std.stream 辺りのものでごちゃごちゃせねばならんのか,あるいは・・・.
進んでいるようでなかなか進まないねえ.