X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
NGNG
スレ無いしサイト少ないので立ててみる
いらなかったらサゲまくってください
0482デフォルトの名無しさん
垢版 |
2005/10/23(日) 22:53:38
いや、だから自作してるって。メジャーなのは大きすぎるから。
あと、単独では動かず、Perl本体をインストールしないといけないPerlは問題外。
0485デフォルトの名無しさん
垢版 |
2005/10/24(月) 00:27:39
全台UNIXというわけにもいかない。
ハードや商用ソフトの知的所有権の制約もあるんだよ。
0487デフォルトの名無しさん
垢版 |
2005/10/24(月) 00:33:56
だからそういう外部モジュールと依存関係とりたくねーの。
スタティックリンクしてなるべく自己完結したいの。
0490デフォルトの名無しさん
垢版 |
2005/10/24(月) 00:55:56
自分が必要な機能だけをサポートした、小さなライブラリ作れば済むだけの話じゃん。
汎用のライブラリが小さく作れるわけ無かろう。
バカを相手するのも大変だな、まったく。
0493デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:08:53
その場合の大きい小さいって何だ?
ファイルサイズか?それともいらない関数が多いとかか?
0496デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:19:07
「お前が欲しい機能だけ実装されたライブラリ」の話だったらまったく興味は無いな。
0497デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:22:45
やっぱXMLの話にもっていくほどじゃないな。
>>494が欲しいのはconfの特定の部分を書き換えるライブラリじゃん。
0498デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:27:01
だからトップダウンでパースするかイベントでとるかとか
字句解析時の内部コードはどうするかとか
そういう話にはもって行きたくないのね?
0499デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:28:31
msxmlの使い方がわかんなくて駄々こねてるだけと見た。
0502デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:35:48
話が錯綜してるけど482は自作しているのだが。
もう一人は小さいのが無いのか探している。
0503デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:36:13
staticリンクなら、もともと「使ってない機能に関する」オブジェクトは
リンクされないんじゃないか?
0504デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:36:49
>>498
おまえ素人か。
仮に作りたいなら要件を詰めろよ。
どんな機能が必要か決めないとそんな話にもっていけるわけねーだろ。
0505デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:37:42
文字エンコード対応だけで結局デカくならん?
Windowsには標準ではiconvも(もちろんICUも)ないよ?
まあデカいからICUなんてこの場合まず選択肢に入らないだろうけど
0507デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:39:44
>>503
規模が大きいということはずーっとバグ取りやセキリティfixの
バージョンアップがずーっと続くということもあるし。
0508デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:40:39
>>507
だったら何?
0510デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:43:24
>>505
UTF-8の場合、外部の正規表現ライブラリの制約とかが無い限り
ASCII記号とマルチバイトが被らないという特徴を生かすという方向もある。

>>506
オレのはトップダウンパーサ。
0514デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:48:20
ttp://www.40hz.org/tox/
これはまじで小さいよ。パーサといえるかどうかは微妙だが
インタフェースはSAX風のイベントハンドラ式。
これをちょっといじったのを使ったことはある。
0515デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:49:26
ていうか「正規のXML文書であっても読めるとは限らない」ライブラリ、だよね
いらないよそんなの。
0517デフォルトの名無しさん
垢版 |
2005/10/24(月) 01:51:06
配布まで考えるとオレ様ライブラリの方がいいかもね。
ほげほげXMLのバージョンいくつをインストールして
あれもこれもダウンロードしてOSはサービスパックいくつ以上とかうるさくなるから、
なるべくひとつの実行ファイル単体で動作するもののほうがうれしい。
0521デフォルトの名無しさん
垢版 |
2005/10/29(土) 10:39:05
結論:msxml最高
0524デフォルトの名無しさん
垢版 |
2005/11/02(水) 07:48:50
MiX凍結して結構経つなぁ
個人的にTinyやexpatよりもMiXが一番ニーズに合うから期待はしてたんだけど


もうだめぽ…?
0525デフォルトの名無しさん
垢版 |
2005/11/02(水) 14:25:14
小規模ソフトですぐに枯れたんならむしろ旬だが。
逆に永遠にバグフィックスが続くのが大規模ソフトのイタイ点。
0528デフォルトの名無しさん
垢版 |
2005/11/29(火) 17:56:08
MiX、サンプルの
MiX::DOM_Parser<char> parser;
parser.setIgnoreSpace(true);
return parser.parse(fin);
がコンパイル通らなくてどうしようもないんだが。。。
document_typeとMiX::document<char>が合わない??
0529デフォルトの名無しさん
垢版 |
2005/12/07(水) 07:42:08
WebサービスもXMLもVBならカンタンだね。
WebアプリケーションもWindowsアプリと同じだし、


そもそもXMLって何だっけ?
0530デフォルトの名無しさん
垢版 |
2005/12/10(土) 17:06:55
MiXが使えないと嘆いてた者です
ちょっとしたXMLを読み書きしたいだけなら
SourceForgeにある、Froggerがよさげでした
機能、サイズともにMiXより小さくて(ヘッダとソースで1000行以下)
DOMでの読み書きができて、SAXは使えません
他、細かい事はできない感じですが、用途によっては十分だと思いました
参考になればと思い書き残しておきます
0534デフォルトの名無しさん
垢版 |
2006/02/04(土) 01:10:11
IXMLDOMNodeのnodeTypedValueプロパティがSystem.Xml.XMLNodeには
存在しないんだけど、C++でput_nodeTypedValue()でシリアライズした
VARIANTは、どうやればC#で読み出せるんだ。

いろいろ調べたけど、どうも無理ぽなんだが。
(Interop.MSXML2.dllを作れば別だけど)
0536デフォルトの名無しさん
垢版 |
2006/02/19(日) 00:04:45
機能的にはむしろS式の方が優れているのだが、
XMLである必要ってのは結局ミドルウェアや市販のツールの都合だろうな。
0538デフォルトの名無しさん
垢版 |
2006/03/14(火) 08:05:50
MiX使ってみたんだけどこれなんで引数の受け渡しが参照じゃないの?
理由がサッパリわからんのだけど
もしかしてこれは俺の知らないワンダフルな最適化方法なのかい?
0540デフォルトの名無しさん
垢版 |
2006/03/16(木) 13:49:59
生の XML ではなくて、RDF (RSS/RDFに限らず)を
いじくるための標準的なライブラリは何でしょうか?

Mozilla のソースなどから取り出して使えないかと
検討したことがあるんですが、単独で使うには
適していないみたいです。
0545デフォルトの名無しさん
垢版 |
2006/06/03(土) 06:38:22
XML Schema Language でかかれたスキーマから、
C++ のクラスを生成してくれるようなライブラリはありますか?
できればシリアライザも・・・

Java や .NET Framework ではあるのですが、
C++ で読み書きしたいっす。
0546デフォルトの名無しさん
垢版 |
2006/06/24(土) 02:22:52
セクロス=sex
0548デフォルトの名無しさん
垢版 |
2006/06/24(土) 13:38:38
>>540
http://librdf.org/

C++っていうかCだけど。
あとrepatっていうexpatベースのRDFパーサがあったんだけど配布元が消えた。
0549デフォルトの名無しさん
垢版 |
2006/08/25(金) 02:16:21
xercesのC++版で、SAXをつかって、ファイルに書き出すクラスってあります?
MSXMLやxercesのJava版ではあったんですが。
とりあえず実装して使ってますが、元々あるなら切り替えたいなぁと。
0551デフォルトの名無しさん
垢版 |
2006/08/30(水) 22:38:19
Documentというか、Java版のクラス名と同名、一部でソース検索掛けたり、
ぐぐったりしてみましたが、見つからず。
0552デフォルトの名無しさん
垢版 |
2006/09/04(月) 19:56:26
xecersってライブラリの事?
0554デフォルトの名無しさん
垢版 |
2006/09/08(金) 18:32:23
フリーズではなく、思いっきり時間かかっているだけってことないか?
#100Mもあったら無茶苦茶リソース食いそうだが。
0556デフォルトの名無しさん
垢版 |
2006/09/17(日) 15:34:34
DOMが使えて軽いXMLパーサある?
0560デフォルトの名無しさん
垢版 |
2006/09/28(木) 23:06:24
C++ というか、.NET の話な気がするけど、
XPath などで、1部分だけXMLノードを抜き出して、
それを Read() で回して各ノードの情報を取りたいんだけど、
どの reader に代入すれば良いのか分からない……どうしらた良いですか?
0561デフォルトの名無しさん
垢版 |
2006/09/28(木) 23:07:44
dom使ったらすんげー遅かった
saxってどうなんすか?

っていうかセンス無いライブラリだと思った
libxmlでも試すか…
0562560
垢版 |
2006/09/28(木) 23:27:40
あ、違う方法だけどできた。すまんかった。
0563デフォルトの名無しさん
垢版 |
2006/09/28(木) 23:54:00
Javaみたいにインタフェースベースで作ればいいのに。
MSXMLだろうがXercesだろうが、
それぞれのファクトリだけ変更すれば全部同じになるじゃん
0564デフォルトの名無しさん
垢版 |
2006/09/29(金) 00:00:38
MSXMLは元からインターフェースベースですよ。

……すまん、言ってみたかっただけだ。
0566デフォルトの名無しさん
垢版 |
2006/10/28(土) 21:30:02
xmlファイルのdiffツールでいいものないかな?
単純なdiffだと、line単位で差分を検出してしまうので
無視していいものまで出てきてしまいます
xpath形式に変換してdiffとかすればできるかな?
0567デフォルトの名無しさん
垢版 |
2007/01/12(金) 18:35:35
UTF-8のxmlをXMLString::transcodeでShift-JISに変換すると下記の様に、"〜"や"−"が"?"となってしまうのは解決できませんか?

「お〜い。−100」 → 「お?い。?100」 となってしまいます。

BCC5.5、Xerces-C++ Version 2.7.0 を使ってます。
0569567
垢版 |
2007/01/13(土) 14:44:52
>>568さん
ありがとうございます。
ttp://www.ingrid.org/java/i18n/encoding/shift_jis.html
を参考に何となく分かりました。

結局解決は無理なのでしょうか…?
Xercesのソースをいじったり、transcodeで使う変換テーブルの様なものがあって、それをいじれば可能とか?
解決方法をネットで探しているのですが、一向に見つからなかったので質問させて頂いた次第です…
0571567
垢版 |
2007/01/13(土) 15:24:46
>>570さん
ありがとうございます。

実は私、Cの経験は多少あるのですが、C++やXML、またWindows上でのソフト開発に関してはさっぱりのド素人です。
今回は、あるフリーソフトの公開されているソースを、少しだけ自分で必要な機能に特化して改造しようとしていている最中です。
とりあえず何とか環境を揃えて、ソースをビルドできるまでにはなりました(^^;
ICUというのも知りませんでしたが、少し調べてみて、これを文字変換に使えばできるのかな?という感じなのでもう少し調べてみます。
分からなかった場合、また質問させて頂くと思うので、よろしくお願いします。
0572デフォルトの名無しさん
垢版 |
2007/01/13(土) 15:51:57
今時XPathも使わずにDOMを真面目にたどって要素を取得なんて考えられんが
Xerces, Xalan両方入れるとなるとデカ杉っつー感じよなぁ
0573道化師
垢版 |
2007/01/13(土) 18:35:35
>>567-568
バベルでその問題に対応する為にそのへんの差分をいろいろ調べたけど、
取りあえず Xeerces に読み込ませる前に予め以下の変換を施せば十分だと思う。

0x2014 → 0x2015 // HORIZONTAL BAR
0x301C → 0xFF5E // FULLWIDTH TILDE
0x2016 → 0x2225 // PARALLEL TO
0x2212 → 0xFF0D // FULLWIDTH HYPHEN-MINUS
0x00A2 → 0xFFE0 // FULLWIDTH CENT SIGN
0x00A3 → 0xFFE1 // FULLWIDTH POUND SIGN
0x00AC → 0xFFE2 // FULLWIDTH NOT SIGN

あと、Mac 上で作成された UNICODE 文字列には結構
PRIVATE USE AREA ( 0xE000 〜 0xF8FF )のコードが含まれるんで
必要に応じてこのへんのコードも読み飛ばせばおk
0574567
垢版 |
2007/01/13(土) 21:51:04
>>567-571,573
ICUとやらををどうにか組み込んだりしてみましたが、ダメでした。
私のレベルでは無理みたいなので、あきらめます…

どなたかWindowsXP、BCC 5.5.1、Xerces-C++ 2.7.0の環境で
>>567が問題無くできているよという識者の方がいらっしゃいましたら、初心者向けに具体的対策を御教授願います。m(_ _)m
0576567
垢版 |
2007/01/14(日) 11:46:00
>>575さん
表の値がよくわかりませんでした…
例えば "〜" のUTF-8コードって 0xEFBD9E、Shift-JISは 0x8160ですよね。
でも XMLString::transcode に渡すのは const XMLCh* 型みたいなので、unsigned shortのワイド文字型のポインタになってますよね。
ということは、XMLString::transcode に渡す前にどこかで UTF-8→XMLCh型の変換 が行われているという事ですか?
つまり "〜" 0xEFBD9E(UTF-8)→<どこかで変換>→0x????(XMLCh型)→<XMLString::transcodeで変換>→0x8160(S-JIS) ということ?
見当違いでしたらすみません。

>>575さんは対策可能なのでしょうね…。ひょっとしたら確認も取れているのでしょうか。すばらしいです。
私の知識レベルでは無理そうです(T_T)
0577デフォルトの名無しさん
垢版 |
2007/01/14(日) 17:09:56
ひっかかったのはそこか。
>>573 の変換表の値は UTF32 の時の値。

>でも XMLString::transcode に渡すのは const XMLCh* 型みたいなので、
>unsigned shortのワイド文字型のポインタになってますよね。
>ということは、XMLString::transcode に渡す前にどこかで UTF-8→XMLCh型
>の変換 が行われているという事ですか?
>つまり "〜" 0xEFBD9E(UTF-8)→<どこかで変換>→0x????(XMLCh型)→
><XMLString::transcodeで変換>→0x8160(S-JIS) ということ?

xerces を触ったことはないけど、恐らくそうだろうね。
const XMLCh * な文字列に格納された時点で UTF32 に変換されていれば、
>>573 の変換を<XMLString::transcodeで変換>の直前に適用するだけで多分、おk
0578567
垢版 |
2007/01/15(月) 15:58:45
>>567です。
読み込むオリジナルのXMLはUTF-8だったのですが、これを一旦Shift-JISに変換してからxercesを通す事で、XMLString::transcode周りをいじらずに、とりあえず求める結果を得ることが出来ました。
("〜"はまだですが、"−"は表示確認済み)
レスをして下さった皆様ありがとうございました。m(_ _)m
0579デフォルトの名無しさん
垢版 |
2007/02/05(月) 14:09:48
linux & C++ & libxml2 で設定ファイル読み書きさせたいんだけど全然資料ねーや
日本語の資料なんかないですか?
■ このスレッドは過去ログ倉庫に格納されています

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