C++でXML(主にxerces)やろう!
■ このスレッドは過去ログ倉庫に格納されています
スレ無いしサイト少ないので立ててみる
いらなかったらサゲまくってください ∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉 ねぇ、XML全般の話題ってこのスレでいいの?
XMLがタイトルに入ってるスレがここともうひとつしかないんだけど…。 C++BuilderでXerces C++ 2.3.0を使おうとしてるんですが、
うまくいかない・・。コンパイルするとエラーがいっぱいです・・
何故?誰か教えて下さい・・。 2.3はわからんけど、2.2なら
borlandの最新パッチを当てた上でコンパイルできたような気がする
(builder6 personal) 285> ありがとうございます。最新パッチ当ててみたんですが、
やっぱりだめでした。出力パスとかいじって
エラーをいくつかでないようにした後に、致命的エラーとやらが
でてしまいます。コンパイラ内部のエラー?・・今の私にはお手上げです。
ちなみに(Builder6 Professional)だったのですが・・。
う〜ん。 他のやり方を少し探してみようかと思います。
でも、分かる方いらっしゃったら教えていただければうれしいです。 libxmlについてききたいんですが いいっすか?
タグの移動とか
パースとか ききたいんですが。 >>287
内容は少し古いけど、まずはここを嫁。
ttp://www.turbolinux.co.jp/world/library/features/c_magazine/vol_08.html
libxml2は構造体のメンバ名に一部違いがあるから、注意しる。
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄ Linux上でexeclpをつかってXalanを起動しようとしたけど、
パラメータを受けとってくれまへん。
execlp("Xalan", "Xalan", "-o", "test.htm", "test.xml", "test.xsl", NULL);
こんなんじゃいかんですか?
うは、ごめん。
パラメータ指定方法がミスってた
動的にexeclp()の引数の数変えてたのでミスってた…… ここで質問していいのかな。
VC++7.1のMFCプロジェクトでexpat使ってるのですが
リンカエラーがでてコンパイルできません。
「error LNK2019: 未解決の外部シンボル _XML_ParserCreate が関数 "public: bool __thiscall ServerConf::ReadConf(char const *)" (?ReadConf@ServerConf@@QAE_NPBD@Z) で参照されました。」
なにか対策はあるでしょうか。よろしくお願いします。
>>296
すいません探しかたが甘かったみたいです。
検索で対策が見つかりました。お騒がせしたです。
ttp://www.codeproject.com/soap/expatimpl.asp?df=100&forumid=3312&exp=0&select=363268#xx363268xx (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン >>276
かなり遅れましたが、お世話になったので報告。
結局、xerces+Xalanって方向でやりたい事できました。
それもxerces自体は、Xalanを使うためにいれてくだけって感じです。
Documentなどの読み書き、処理はじつは自前で行う部分がを使ってたんですが、
テストしてる段階で、xercesつかっても要件満たせるんじゃないかと
設計見直し中です。
ども、お世話になりました。 誰かMiXの最新バージョン使った人いる?
いたらどんなでした? いまXercesC++(Mac)やってるけど、さっぱり。。。
サンプルが動かん。 MSXML VC++(Win)に変更してはどうか。
サンプルもばっちり動く。 >>306
もう知ってるかもしんないけど、PantherからはXML関連のAPI(NSXMLParser)が追加されたよ。
んでこれ、どんな感じなんだろう。使ってみた人いたら感想求ム
VS2003でstream.h使えなくなってる・・・・・・
XML4Cのコンパイルできなーい!
しょうがないのでMSXMLにnige
DOMをドムと呼ぶのはいいとして、SAXをザクと呼ぶのはやめてくだちい。 MSXML+C++でDOMプログラミングをしているのですが,
タグ名の前に接頭辞をつける方法がわかりません.
CreateNodeは名前空間URIを引数として渡せるのですが,
接頭辞を自動的に振ってはくれませんし,XercessのようなsetPrefix関数もありません.
何か良い方法をご存知の方がいらっしゃいましたら教えてください. 俺的にはXML4Cが好きだな。Xercesは好きくない XercesでDTD通りに要素を挿入するにはどうしたらいいの?
それともファイルに書き出すときに変換するの?
すれ違いかもしれませんが、
Axis使ったことある人いますか?
MSXMLパーサに、フルアドレス指定してあるDTDの参照先をローカルに
するAPIってないの?
スタンドアロンのPCじゃ、XML使うなってことなんだろーか。 DOMとSAXってどっちがいいの?
それぞれの特徴を教えてください。 SAX : 一度XMLを舐めるだけでいいならこっち(一度読んだ場所へは戻れない一度きり)
DOM : メモリ上にXML文書の内容を表すDOMのオブジェクト共を作るのでSAXよりは重い(ランダムアクセスが可能)
SAXで自前のデータ構造に読み込み、内部処理。
書き出しはその逆。
これ。 Simple Outline XML >>>>>>>>>>> 普通のXML SGML >>>>>>>>超えられない壁>>>>>>>> XML 天気予報は既存の配信ビジネスを守るためにRSS配信できない
http://neta.ywcafe.net/000339.html
国民の税金で気象データの収集・解析までしておきながら、
気象庁の官僚の天下り先である
・財団法人 気象業務支援センター
・財団法人 日本気象協会
の利権保護の為、未だ気象庁はRSS配信を拒んでいるのだ。
将来的に行われるであろう地震予知の情報も、有料で国民に販売するつもりだろうか? がんばって探した結果がこのスレか?
XMLスレもあるしRSSならWebProgにある。
つーかRSSっていうより気象庁バッシングしたいなら板違いだろ。 >>330
329 は各地にマルチポスとしてるよ。 #include<Xercesc/util/PlatformUtils.hpp>
#include<Xercesc/util/XMLString.hpp>
#include<Xercesc/dom/DOM.hpp>
using namespace std;
XERCES_CPP_NAMESPACE_USE
#define X(x) XMLString::transcode(x)
int main(){
XMLPlatformUtils::Initialize();
{
DOMImplementation *impl= DOMImplementationRegistry::getDOMImplementation(X(""));
DOMDocumentType *doctype = impl->createDocumentType(
X("html"),
X("-//W3C//DTD XHTML 1.1//EN"),
X("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd") );
DOMDocument *doc = impl->createDocument(NULL,X("html"),doctype);
}
XMLPlatformUtils::Terminate();
return 0;
}
これをVC7でビルドしようとしたんですが
xml error LNK2020: 未解決のトークン (0A000010) __imp_?fgXercescDefaultLocale@XMLUni@xercesc_2_3@@2QBDB
xml error LNK2020: 未解決のトークン (0A000013) __imp_?fgMemoryManager@XMLPlatformUtils@xercesc_2_3@@2PAVMemoryManager@2@A
xml fatal error LNK1120: 外部参照 2 が未解決です。
というエラーが出るんですが、どう対処すればいいのか分からんのです。誰か助けて。Xersescは2.3っす。 DOMってなんであんなに使いにくいんだろう。
XPathサポートしてる実装じゃないととても使う気になれない >>333
極度に移植性を高めた結果でしょ。言語に制約を受けないように。
それにしても例えば要素の子要素をたどるときと要素の属性をたどるときでまったく違うやり方でしょ。
XPathだったら軸がちがうだけで子要素名/属性名をノードテストに使用できる点は一緒なのに、
DOMだと「ある要素のhoge属性の値を取得」だったらgetAttibuteでノードマップをもらって属性名をキーに値をゲットだけど
似たような「ある要素のhoge子要素の値を取得」でまったく違うコードをいっぱい書かなきゃならん。
XPathだったら/@hogeか/hogeかの違いだけだ。 >>332
どーやってビルドしようとしたのか、詳しく書かないとわからんヤロ。
Xersescは2.3 の導入方法、vc7はスタンドアロン?(free)、リンカに渡す
pathチェック…。
一番の原因は最後の理由では?(-_-;
C++でxercesを利用すると一体どんな問題が解決されますか? VC++.NETなのかVC#.NETなのかそもそもスレ違いだバカ >339
typenameをどっかにつけたら通る
でも、そもそもあれだとgccでも通らない気がするけど… >>342
dクス
えーっと、typenameを付ける場所は二カ所あるです
MiXのバージョンは0.5.3ね
Attribute.h(21)
typedef nodelist_type::iterator nodelist_iter;
↓
typedef typename nodelist_type::iterator nodelist_iter;
NodeList.h(39)
typedef container_type::iterator basic_iterator;
↓
typedef typename container_type::iterator basic_iterator;
あと、凡ミスってかcygwinのgcc3.3.1だと平気だけど、VC++7で引っかかる点
Attribute.h(55)
virtual string_type toString(bool dmy=false,const string_type& dmy=xml_traits::indent(),int dmy2=0)const;
↓
virtual string_type toString(bool dmy=false,const string_type& dmy1=xml_traits::indent(),int dmy2=0)const;
引数の名前がダブってる(;´д⊂)
>343
> 引数の名前がダブってる(;´д⊂)
そういえばそんなのもあったね(ニガワラ
んでもって、DOMパーサーにXML食わせてパースに失敗したらリソースリークしたり、
(auto_ptrをparseの中に仕組んだりして対処したような)
開始タグを入れる前に終了タグを入れたりしたら(いきなり </> 見たいに)
STLPortのデバックモードで落ちたり…
(空のstackをpopしてたんだっけかな…)
結局途中で断念してしまった… >>344
おとなしくXerces使った方が良いのかも知れんね(´・ω・`)
もうちょっと、MiX使ってみてから判断します
感想。
リークはちゃんと調べてないので分かんないけど、
とりあえず、ドキュメントが間違ってるのは何とかして欲しいと思った(;´д`)
まあ、規模はそれなりに小さいので、条件によっては使っても良いんじゃないかと。
C++でXMLいじるとなんかアドバンテージあるの? 違うって。C++のアドバンテージとか言い出すと他の言語による比較論議になる。
そうするともはやC++で〜スレじゃなくなる。
(C++による)MSXMLとXercesの比較などならわかるが、C++を比較対象にするのはちょっと違う。
C++スレでJavaとの比較議論始まったらウザイだろ。それと同じ。
>>349
速い。その代わり文字列処理が面倒になるかな。
やるならJavaとかの方がいいと思うけどね。 stringクラスとboost使えばそうでもないよ。 >>354
じゃあスーパープログラマにとってはC++で組んだ方が気持ちいいんですね C++の場合はXercesじゃないほうがいいじゃん。
ちょっと規模が大きいからもっさりしそう。
単純なパーサ作ればそのアプリのデータだけはきびきび処理できるわけで。 MiXでさえ機能多すぎでうぜぇ気がする。
単にパースしてくれれば済む話。 誰か、STLPortのデバッグモードでも落ちない小さなXMLパーサをつk(ry >>359
確かになんとかしてほしい。
取らぬ狸の皮算用とか言ってる場合じゃないぞ。
xerces-cのminGW用インポートライブラリ作ろうと思って挫折した。難しすぎ。
窓dllの仕組みもよう分からんのに移植しようとか思ったのが甘かったか・・・ 名前マングリングされててどうにもならんす orz
pexportsで抜き出したdefの上4行はこんな惨状
LIBRARY xerces-c_2_6.dll
EXPORTS
??0ASCIIRangeFactory@xercesc_2_6@@QAE@XZ
??0AbstractDOMParser@xercesc_2_6@@IAE@QAVXMLValidator@1@QAVMemoryManager@1@QAVXMLGrammarPool@1@@Z
ん、たしかに。で、ソースからリコンパイルしてリンクまでいけた。
・・・が、SAXparserのコンストラクタでコケる。
これからデバッグモードでやりなおしてみるつもり。やれやれ・・・。 runConfigのオプションは?
-p mingw-msys -n fileonly -r noneで行けた。
pスレにすると、MinGWのDLLがウザいので、pスレをやめると良いと思われ。
tinyXMLって名前のとおりtinyなのかな?
パースするだけならこれで良さそうなんだけれど。 パースするだけで、高速なのがよければexpatがお薦め!!
安定してるしね。CPPラッパーの、expatppも結構使える。
>374
ビルドの最後でdoowrap.exeからc++.exeに渡すパラメータがおかしくてエラー出てたけど
手動でg++.exeに変更したらなんとかビルドできて正常動作しました。ありがとう。
Xerces C++ 2.6.0を使用しています。
for(;;) {
elem = doc->createElement(tag_name);
root->appendChild(elem);
root->removeChild(elem);
elem->release();
}
と書くと、メモリをがんがんに消費しまくるのですが、
何か足りない処理はありますか? メモリ使用量が正常で無いというのは何と比較したのよ ■ このスレッドは過去ログ倉庫に格納されています