- PR -

xerces c++ をwin95で動かす

1
投稿者投稿内容
わたびん
常連さん
会議室デビュー日: 2003/02/26
投稿数: 24
投稿日時: 2004-11-29 13:34
お世話になります。

win95でXerces C++を利用されている、または利用した方はいらっしゃますか?
現在win2kで動作するのですが、95では動作しなくて困っています。

公式には95はサポートしていないという情報はみたのですが、
ここをこうすれば動くよというような
情報が御座いましたら、教えていただきたいと思いました。

以上、よろしくお願い致します。
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2004-11-29 17:52
Xerces C++ を使っています(Win98/Meでも)。
Win95では試したことはありませんが、どのようなエラーが出るのですか?
もう少し詳しく書かないと、レスの付けようがありませんよ。

それと、せっかくソースコードもダウンロード出来るのですから、
どこでどんなエラーが出るのかデバッグしてみましたか?
デバッグしてみれば何か解決策が見えてきますよね?

※ちなみに投稿先は「XML & SOA」の会議室の方がベターだと思います。
わたびん
常連さん
会議室デビュー日: 2003/02/26
投稿数: 24
投稿日時: 2004-11-30 18:34
chack さんありがとうございます。

どこに投稿しようか悩んでいたのですが、
いわれてみればそうですね。
win95だからここかな?って思ってしまいました。

win95で動かしたときにエラーになるわけではなさそうです。
DOMNodeList *list = doc->getElementsByTagName(XMLString::transcode("Row") );
ってやったときに
cout << "該当する要素の数は=" << list->getLength() << endl;
ってやるとlist->getLength()が0になっているんです。

win2kで動かすと想定する数字がとれました。

なんかやり方とかの問題で済むのであれば、
ご存知の方にヒントを頂こうと思った次第です。

やはりソースか。。。

ここは覚悟をきますか!
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2004-12-01 13:40
こちらのWin98環境で Xerces c++ 2.6.0 を使って試してみましたが、
ちゃんと list->getLength() は動いています。(Win95では未確認ですが)

Xerces c++のサンプルに CreateDOMDocument というものがあります。
これでは
unsigned int elementCount = doc->getElementsByTagName(X("*"))->getLength();
というコードで同じことをやっていますので、このサンプルで試したらどうでしょうか?
ちなみに、X("*")は XMLString::transcode("*") のラッパークラスのマクロです。

わたびんさんのコードで
DOMNodeList *list = doc->getElementsByTagName(XMLString::transcode("Row"));
と記述されていますが、これは正確には
XMLCh* uniName = XMLString::transcode("Row");
DOMNodeList *list = doc->getElementsByTagName(uniName);
XMLString::release(&uniName);
としてreleaseしないとリークしますのでご注意を。

また、MSVC++を使用していると思われますので、下記のような記述ではいかがでしょうか?
DOMNodeList *list = doc->getElementsByTagName(L"Row");
unsigned int count = list->getLength();

わたびん
常連さん
会議室デビュー日: 2003/02/26
投稿数: 24
投稿日時: 2004-12-03 11:21
chackさんありがとうございます。

(1)メモリリーク対応
(2)下記のように修正して実験
DOMNodeList *list = doc->getElementsByTagName(L"Row");
unsigned int count = list->getLength();

上記の方法で対応してみたいとおもいます。
追って結果を報告したいと思います。


私はC++はド素人なのですが、
上級者のアドバイスが頂けて本当感謝です。
C++はちと私には敷居が高いようです。。。


わたびん
常連さん
会議室デビュー日: 2003/02/26
投稿数: 24
投稿日時: 2004-12-03 11:30
さっそく実験してみました。
DOMNodeList *list = doc->getElementsByTagName(L"Row");
unsigned int count = list->getLength();
でやってみたのですが、win95ではやはり0件でした。。

わたびん
常連さん
会議室デビュー日: 2003/02/26
投稿数: 24
投稿日時: 2004-12-03 11:38
さっそく実験してみました。
DOMNodeList *list = doc->getElementsByTagName(L"Row");
unsigned int count = list->getLength();
でやってみたのですが、win95ではやはり0件でした。。

もうひとつの実験
unsigned int elementCount = doc->getElementsByTagName(X("*"))->getLength();
をやるのを忘れていました。
こちらも実験してみます。

これはwin95にVCいれてデバッグしかないですね。。。
いれていいのかなぁ。。??
1

スキルアップ/キャリアアップ(JOB@IT)