MSXMLにおけるxmlコメントタグの扱いについて

[戻る]
owner 2005/01/19(水) 22:34:49
コメントタグを含むXMLをMSXMLで読み込もうとしたところうまくいきませんでした。
皆さんは、どうやってコメントタグを処理されているのでしょうか?
お知恵をお貸しください。

*環境:VS.net 2003 VC++7,Win32,MSXML


以下のようなxmlを読み込む処理をするとします

---test.xml---ver1-----

<?xml version="1.0" encoding="Shift_JIS"?>

<root>
  <a>1</a>
  <b>2</b>
  <c>3</c>
</root>

-----------------
プログラム一部抜粋

for ( MSXML::IXMLDOMElementPtr element = Parent->firstChild; element != 0; 
element = element->nextSibling ) {
 root内のタグを判別して何らかの処理
}

以上のような処理で、通常は問題ないのですが
test.xmlに以下のようにコメントを入れたところ正常に機能しなくなりました.


---test.xml--ver2------

<?xml version="1.0" encoding="Shift_JIS"?>

<root>
  <!-- coment test -->
  <a>1</a>
  <b>2</b>
  <c>3</c>
</root>

-----------------
このxmlファイルのばあい

element = Parent->firstChild
において element == 0 になってしまいます。
element->nodeType == NODE_COMMENT などでコメントタグをはじこうとしても
elementそのものが0ではどうしようもありませんでした。

コメントタグ以降のデータにアクセスするにはどうしたらよいでしょうか?
また、パーサの設定などでコメントを完全に無視するフラグなのは存在するのでしょうか?

以上よろしくお願いします

dairygoods 2005/01/20(木) 12:08:54
> MSXML::IXMLDOMElementPtr element = Parent->firstChild; 

コメントNodeは、Elementではありませんので、
MSXML::IXMLDOMElementPtr には代入できないでしょう。

for (MSXML::IXMLDOMNodePtr node = Parent->firstChild; ...) {
  if (node->タイプ == エレメント) {
     // ここでやっとElementにキャストできる。
     MSXML::IXMLDOMElementPtr element = node;
  }
}

古いスレッドには追加発言できません。