C++でXML(主にxerces)やろう!

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
NGNG
スレ無いしサイト少ないので立ててみる
いらなかったらサゲまくってください
05/01/28 15:20:50
>>403
C++版のexpatppってのがあるらしい

libxmlはCだね。
まあC++でも使えるからいいんじゃね?


tinyXML遅いっぽ
ttp://www.radiumsoftware.com/0303.html#030308
05/01/28 15:23:49
Cだと
Parsifalってのもあるっぽいね

http://www.saunalahti.fi/~samiuus/toni/xmlproc/

速度はやっぱり
expatだが
409Rubyist!
垢版 |
05/01/28 17:47:33
libxmlはHTMLParserやシンプルなhttp/ftpクライアントとかXMLSchema/RelaxNG validationやlibxsltと連携できるのが利点かな?
windows上だとiconvやzlibもおまけで付いてくるので少し配布サイズがでかくなるが。
05/01/28 19:13:49
XMLって
<root att0="a", att1="b" />

じゃなく

<root>
<att0>a</att0>
<att1>b</att1>
</root>

って書かないと駄目なんですか?
Elements使えば解析できるが
05/01/28 19:23:39
>>410
テクニカルにはどっちもOK。
理念的には、というか普通はどっちも×。
05/01/28 20:11:27
xmlの理念について解説してるページ教えて
413デフォルトの名無しさん
垢版 |
05/01/28 21:15:44
理念など無いよ。
05/01/28 21:52:09
<root att0="a", att1="b" />
         ↑
05/01/28 22:01:56
見落としてた・・・・orz
05/01/29 02:58:17
XMLをバイナリーデータに落とし込む良い方法はありますか?

ttp://www-6.ibm.com/jp/developerworks/xml/040903/j_x-trans1.html
1つだけ情報見つけたけどなんかもっと分かりやすくて
C++で使えるツールとか無いかなぁと。
05/01/29 03:32:52
>>416
zipなりで圧縮すれば?
05/01/29 12:11:34
1バイトずつ読み込んで全ての最上位ビットを1にすればよろし。
05/01/29 16:09:30
壊れちゃうよ
05/01/29 16:25:41
>>410-411は結局どう書けば普通なの?
05/01/29 21:28:01
>>419
ごめん。そうだね。

1バイトずつ読み込んで全ての最上位ビットを反転すればよろし。

に訂正。
05/01/30 01:00:02
>>420
気分次第
05/01/30 02:21:42
>XML Binary Infoset (XBIS)プロジェクト

↑これ使った人いる?

>プレーンテキストの XML と XBIS エンコーディングした XML と
>gzip 圧縮した XML に対するテスト結果によると、
>XBIS を使えば処理時間と文書サイズ両方が小さくできるのに対し、
>gzip 圧縮を用いれば文書サイズが大幅に小さくできる代わりに処理時間が
>増えるということです。

って事らしいが。
05/01/31 09:44:26
読みやすきゃ形式どうでもいいんじゃない?
不安ならHTML真似すれば
05/02/01 09:01:41
SOX(Simple Outline XML)流行らないね
05/02/01 18:59:57
C++でXML書かせたいんですけどいいライブラリないですか?
05/02/01 19:50:34
擦れたい嫁
428デフォルトの名無しさん
垢版 |
NGNG
>>427
得ろ杉
05/02/01 21:35:51
WinだったらMSXML以外を選択するメリットが分らないんだけど。
XercesとMSXMLの違いを教えてぽ。
430429
垢版 |
05/02/01 21:52:22
MSXMLってXPathもXSLTも(1.0だけど)XMLSchemeも実装していて、まじ便利じゃん。
独自拡張って言っても、細かい制御なり設定/取得できていい感じじゃん。
XSLTでもJavaScriptを拡張言語指定できて便利じゃん。(早く2.0を実装しろと)
パフォーマンスも外部参照やValidation組んでいる割にはかなり早いし、軽いじゃん。

くだらない::CoInitialize(VOID)書かなきゃいかんのは、デメリットかな?
スマートポインタと相性悪いんだYO!
個人的にはRELAXを実装して欲しいところ。
05/02/01 21:54:13
ありえね
432429
垢版 |
05/02/01 22:03:55
>>431
具体的にどうありえねーのか教えてくれろ?
ついでにXercesの素晴らしさも教えて欲しいです。

いまXerces-C++使うプログラム書いてんだけどよ、なんか馴染まないんだぁよ。
05/02/01 22:07:09
msxmlでrelaxngの実装されることなんてありえね、と言っているのではないかな。431じゃないがたぶん。
434429
垢版 |
05/02/01 22:26:25
>>433
ありえて欲しいところw
VCのAdd-Inで組んで広めれば、簡単に広がりそうなもんだが。

そういったシェア拡大の為の宣伝は下手だな<relaxng
05/02/03 01:22:12
誘導されてきました。

知ってる人いたら教えてけろ

407 名前:デフォルトの名無しさん 投稿日:2005/02/02(水) 23:26
COMはありですか?

VC6 でMSXML使ってます。

XML形式の書き出しは何とかできたんだけど、出力が1行になっちゃいます。
複数行に出力されるようなフラグとかあるんですか?

現状
<?xml 略?>
<root><a><b>text</b></a></root>

理想
<?xml 略?>
<root>
タブ1個<a>
タブ2個<b>text</b>
タブ1個</a>
</root>
05/02/03 01:38:23
>>435 http://www.azureus.com/xml/art_prettyprinting_xml.htm

何か大変だな。
437435
垢版 |
05/02/03 02:10:32
ぐ、ぐぅ分からん。
段差をつけるには単純に空白を追加しろって書いてあるような気ガス

もしくは VCでやるには XSLT 使わないとダメってことかなぁ
05/02/03 14:02:59
>>435
IEでみればいいよ
439429
垢版 |
05/02/03 19:11:28
>>435
DOMいじって再帰で階差をつけるよりは>>436のサイトのXSLTを読み込んで
変換かけたほうがパフォーマンス的に良い場合が多いし、楽。(データ量が多いほどXSLT使った方が早い)
もともとXML的にはトリミング無い方が正しい(?自信無し)訳だし、確認だけなら>>438の言う通り
IEで見ればいいと思う。

それ以外だと、UTF-8が素で読み込めないという欠点はあるが、Pythonの標準DOMにprettyXML関数がある。
俺はそれを使って、データの確認をしている。
440429
垢版 |
05/02/03 19:15:23
>>435
ちなみにDOM使って再帰で階差をつけるのはそんなに簡単じゃない。
>>436のサイトではSAX使っている例があるが、SAXならクソ簡単。

>>439
誤 トリミング
正 インデント
441435
垢版 |
05/02/03 21:17:00
みんな色々さんく。

とりあえず今回は時間もないんでDOMのままでいっとく

時間が空いたらSAXやってみるかな
05/02/10 19:21:30
XSLTなら
<xsl:output method="xml" />
<xsl:output indent="yes" />
で済むからめっちゃ楽だよね。
05/03/09 20:49:38
MiXバグだらけ、という話だけど
XMLファイルの読み込み程度なら耐えられるのかな?

それともそれすらままならない?
05/03/09 21:38:35
>443
>339,342,343-346
ここらへんの話だね。
しょうじきSTLの扱いが怪しいところが何箇所かあった。
内部処理にexpatを使ってくれるようになったらいくらか…、
って、expatラッパーならほかにあるしなぁ……。
2005/05/10(火) 23:44:35
<xml>
<text prop="a">AAAA</text>
<text prop="b">BBBB</text>
</xml>

XPathで2番目のノードを指定する場合って
/xml/text[2] なんだけど、
これ以外にプロパティで選択する方法ってある?

ニュアンスはこんな感じ。
/xml/text:prop="b"

2005/05/11(水) 01:26:12
>445
XPathには詳しくないが、ググったら一発で見つかったんで答えてみるテスト。
 /xml/text[@prop="b"]
または
 /xml/text[attribute::prop="b"]

ttp://www.doraneko.org/xml/xpath10/19991116/Overview.html#location-paths
447345
垢版 |
2005/06/07(火) 15:22:34
>>444
結局、時間がなかったのであの時はMiX使ったけど、
次の機会には絶対別のパーサを使おうと決めました。

正直お勧めはしません。
448デフォルトの名無しさん
垢版 |
2005/07/14(木) 17:24:57
>>206でも話題にあがってるけど、レスした人がいないようなんで。
XMLのパスに全角文字が含まれていると正しく実行されない。
(DLL内で永久ループにはまる?)
回避法ないですか?
2005/07/14(木) 17:34:34
すまん。DLL内で永久ループ〜ってのは俺のプログラムがあほなせいだった。
m_pParser->parseURI(lpszFileName);

ここでNULLが返ってくるだけだな。
ためしにMSLCh* に変換しても×だった
450デフォルトの名無しさん
垢版 |
2005/07/15(金) 00:24:56
#include <Windows.h>

↑Xercesでこれやったら、コンパイルエラーになるんだけど、どうして?
451デフォルトの名無しさん
垢版 |
2005/07/15(金) 07:59:05
Windows + VisualC++2003 + STLPortで
コンパイルが通らない。
STLPortが駄目なんですかね?
UNIXユーザーはアプリケーションはソースから
コンパイルして使うのが一般的と聞いたんだけど
こういう場合どういった対処をするもんなんですか?

1.アプリ製作元が確認したビルド環境に合わせる
2.ソースを改変してコンパイルが通る様にする
3.バイナリ版を使う
2005/07/16(土) 02:50:03
Xercesで

DOMWriter *pxWriter = static_cast<DOMImplementationLS*>(pxImpl)->createDOMWriter();
pxWriter->setEncoding( _UNICODE("Shift_JIS") );
pxWriter->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
LocalFileFormatTarget target( _UNICODE("tekitou.xml") );
pxWriter->writeNode(&target, *pxDoc);

ってやると、勝手に空白二つのインデントが入ったXML文書が出力されます。それをタブにする方法はありませんか?
453デフォルトの名無しさん
垢版 |
2005/07/16(土) 02:50:36
age
454デフォルトの名無しさん
垢版 |
2005/07/26(火) 19:17:47
http://neta.ywcafe.net/000339.html

天気予報をXMLで提供すると気象庁が発表してから半年が経った
実は2004年の11月には既に気象庁がこんなプレスリリースを出している。
府県天気予報・府県週間天気予報を新しい形式(XML形式)で提供します。

◎:平成16年12月から追加して発表するもの
(XML形式で提供します。気象庁HPでも12月から掲載します。)

しかし発表で予告された12月1日からもう半年以上を経た2005年7月現在、
気象庁のwebサイトにはXML形式のデータなどどこにも見当たらない。

なお、お察しのとおり、財団法人 気象業務支援センターも
財団法人 日本気象協会も 気象庁の官僚の天下り先である。
2005/08/01(月) 20:11:10
官僚って毎日終電過ぎてタクシーで帰るらしいね。
2005/08/21(日) 13:12:18
仕事が忙しいんだね。大変だ。
2005/08/25(木) 23:19:59
タクシーで帰れるなんてなんて贅沢なんだと思ってしまったw
2005/09/04(日) 13:27:06
仕事で忙しいか。
接待したり、飲み会したり、勉強会と称して雑談したり、
有り余るゼニの使い道を考えたり
ゴルフの練習をしたり

大忙し
459デフォルトの名無しさん
垢版 |
2005/09/12(月) 22:43:37
ビルドできないんだけど・・・・

XERCESCROOT=c:/usr/xerces-c-src_2_7_0/src/xercesc

>runConfigure -pcygwin -cgcc -xg++
>make

すっと、

AbstractDOMParser.cpp が、dom/impl/DOMAttrImpl.hpp が見つからないっつってとまる。
そのファイルちゃんとあるし、frameworkディレクトリとかは問題なくコンパイルとおっている
んだけど、なんでですか?
460459
垢版 |
2005/09/12(月) 23:20:35
あれ、cygwinにxerces ついてるじゃん。
こっちつかえばいいや。失礼しました。
461デフォルトの名無しさん
垢版 |
2005/09/13(火) 03:32:00
xercesってなんですか?発音も教えて
2005/09/13(火) 04:18:34
ザーシーズ。

紀元前5世紀前半、アケメネス朝ペルシャの王位についていたクセルクセス(Khshaiarsha)王の
名がギリシア語経由で欧米に伝ったもの。ドイツ語や、英語ではXerxesと書く。
のち、フランスの昆虫学者が、サンフランシスコ半島に生息していた絶滅種の蝶に、この大王の
名を付けた。このクセルクセスのフランス語形Xerces、蝶の名が、XMLパーサxercesの元ネタ。
2005/09/13(火) 04:25:30
>>462
本当なんだかネタなんだかよくわからん情報をありがとう。
2005/09/13(火) 04:32:09
本当だ、ばかもの。
2005/09/13(火) 19:16:52
バカとは何だ、バカとは!
2005/09/13(火) 19:22:37
そうだこのうつけが!
2005/10/07(金) 00:54:31
Xercesやexpatの存在を最近知って
とりあえずイジってみたいというレベルの人向けの
入門的サイトってありますか?できれば日本語で。
2005/10/12(水) 21:49:16
大人しく本買うかライブラリ付属の説明を頑張って読むほうが良さげ
2005/10/12(水) 21:55:42
本あったっけ
2005/10/12(水) 21:58:18
俺は↓の読んだけど意見分かれるかもね

C++によるXML開発技法
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894714140/250-1021717-6488243
2005/10/13(木) 21:44:54
というかその本しか無いんだよな
472デフォルトの名無しさん
垢版 |
2005/10/20(木) 01:46:55
xerces とか libxml って、そのままだとかなりでかいライブラリなんだが、
サブセットで xxx.dll サイズ小さくしたやつってない?
2005/10/20(木) 02:10:42
TinyXMLとか、MiXとかじゃだめなんか?
2005/10/20(木) 02:41:45
>>472
おま、dll って、windows 限定でいいんなら始めから素直に msxml 使っとけよw

インストールされているバージョンに若干気をつける必要があるが、
最近の windows なら標準で添付されてんだから dll の大きさなんか気にする必要なし。
( 最近の windows じゃなくても最近の IE が入ってればおk )
2005/10/20(木) 02:51:38
最近はライブラリで提供されているのにDLLを使うメリットを感じないんだが。
476472
垢版 |
2005/10/21(金) 00:02:41
ゴメソ
別にwindows限定な話じゃないつもりだったんだけど、dll っていっちゃって失敗したw
いや、フリーでソースも公開されてるので、linuxでもwindowsでも使えて、サブセットを
選べて、場面に応じてコンパクトなライブラリとしてビルドできたらいいななんて思ったんです。

>>473
知りませんでした。ちょっと調べてみまつ Thx!!

ただ、本当は xerces の config オプションとかでサブセットでライブラリを作るかフルセット
で作るかをビルド時に選択できたりするとうれしいかなと。
2005/10/21(金) 14:06:32
小さめのライブラリがいいんならもともと小さいのを使っておればいいだろ
expatとかさ
まあDOMもXPATHも使えんがw
2005/10/22(土) 01:05:24
小さいサイズのライブラリを使うためにライブラリの種類を変えないと
いけない(使い方も微妙にかわる)ってのが嫌なんだろう
2005/10/23(日) 00:01:29
XMLを使うったって、
ちょっとプログラム上でApacheやRealServerのconfを
書き換えたいという程度の時もあるんだな。
夜中にトップページを「また明日」に自動的に変更するとかさ。
そういうちょっとした作業にはMiXでさえうざいぐらい大きい。
2005/10/23(日) 21:26:45
ちょっと書き換えたいだけなら、Perlでも遣え。
2005/10/23(日) 21:38:47
だよな。使う道具を間違えてるのに道具のせいにしてるとしか思えん。
2005/10/23(日) 22:53:38
いや、だから自作してるって。メジャーなのは大きすぎるから。
あと、単独では動かず、Perl本体をインストールしないといけないPerlは問題外。
2005/10/23(日) 23:00:44
もしかしてサーバはWindowsか。なんかもう・・・いいや。
2005/10/23(日) 23:06:19
使うOSすら間違えているんだな。論外。
2005/10/24(月) 00:27:39
全台UNIXというわけにもいかない。
ハードや商用ソフトの知的所有権の制約もあるんだよ。
2005/10/24(月) 00:31:56
WindowsならWSHからMSXML使用でいいのでは。
2005/10/24(月) 00:33:56
だからそういう外部モジュールと依存関係とりたくねーの。
スタティックリンクしてなるべく自己完結したいの。
2005/10/24(月) 00:34:01
同意。
2005/10/24(月) 00:35:56
同意は486に対してね。

つかもういいよ。その例はXMLの話にもっていくほどでもない。
2005/10/24(月) 00:55:56
自分が必要な機能だけをサポートした、小さなライブラリ作れば済むだけの話じゃん。
汎用のライブラリが小さく作れるわけ無かろう。
バカを相手するのも大変だな、まったく。
2005/10/24(月) 01:01:35
小さいライブラリの実装とか話題にしたくないわけね?
2005/10/24(月) 01:03:13
「小さいライブラリ無い?」ってただのクレクレ厨じゃん。
2005/10/24(月) 01:08:53
その場合の大きい小さいって何だ?
ファイルサイズか?それともいらない関数が多いとかか?
2005/10/24(月) 01:15:46
オレの場合いらない機能が多すぎ。
2005/10/24(月) 01:18:58
じゃあスレ違いだね。
君専用の汎用ライブラリなんて存在し無いから。
2005/10/24(月) 01:19:07
「お前が欲しい機能だけ実装されたライブラリ」の話だったらまったく興味は無いな。
2005/10/24(月) 01:22:45
やっぱXMLの話にもっていくほどじゃないな。
>>494が欲しいのはconfの特定の部分を書き換えるライブラリじゃん。
2005/10/24(月) 01:27:01
だからトップダウンでパースするかイベントでとるかとか
字句解析時の内部コードはどうするかとか
そういう話にはもって行きたくないのね?
499デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:28:31
msxmlの使い方がわかんなくて駄々こねてるだけと見た。
2005/10/24(月) 01:32:09
いらない機能は使わなければいいだけだと思うのだが。
2005/10/24(月) 01:33:53
>>498
いつのまにライブラリ無いか?の話からライブラリ作らないか?の話に変わったんだ
2005/10/24(月) 01:35:48
話が錯綜してるけど482は自作しているのだが。
もう一人は小さいのが無いのか探している。
2005/10/24(月) 01:36:13
staticリンクなら、もともと「使ってない機能に関する」オブジェクトは
リンクされないんじゃないか?
2005/10/24(月) 01:36:49
>>498
おまえ素人か。
仮に作りたいなら要件を詰めろよ。
どんな機能が必要か決めないとそんな話にもっていけるわけねーだろ。
2005/10/24(月) 01:37:42
文字エンコード対応だけで結局デカくならん?
Windowsには標準ではiconvも(もちろんICUも)ないよ?
まあデカいからICUなんてこの場合まず選択肢に入らないだろうけど
2005/10/24(月) 01:39:00
>>502
自作してるのはXMLパーサじゃないんだろ?
2005/10/24(月) 01:39:44
>>503
規模が大きいということはずーっとバグ取りやセキリティfixの
バージョンアップがずーっと続くということもあるし。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況