XMLファイルを取得するには?


初心者3号  2003-11-11 05:10:25  No: 109872

いつもお世話になっております。

今、XMLファイルを開き、その中のValueを表示する、というプログラムを考えています。
getAttributeで指定すれば取れる、というのは聞いたのですが、その前にXMLファイルを取得できていないようなのです。

Dim xmlDoc   As MSXML.DOMDocument
Dim xmlEle   As MSXML.IXMLDOMElement

Set xmlDoc = New MSXML.DOMDocument

xmlDoc.load ("C:\test.xml")
set xmlEle = xmlDoc.documentElement

としたところ、xmlEleがnothingなのです。
xmlDoc内の parseErrorには、「ドキュメントの最上位には無効です。」
という文字が入っています。

正直全くわかりません。
どこが間違いなのかご教授いただければ幸いです。
よろしくお願いします。


魔界の仮面弁士  2003-11-11 08:26:09  No: 109873

# どうせなら、最新版の MSXML4 を使った方が良いかも。

> xmlDoc.load ("C:\test.xml")
この load メソッドが、True を返しているかどうかを確認してください。
Falseが返されている場合は、読み込み時にエラーが発生しています。

> 「ドキュメントの最上位には無効です。」
XMLファイル自体が間違っているという事はありませんか?


勝手に補足  2003-11-11 17:31:38  No: 109874

> > 「ドキュメントの最上位には無効です。」
> XMLファイル自体が間違っているという事はありませんか?

IEでXMLファイルを開くと、整形式じゃなかったらエラーが
表示されるので便利です。


初心者3号  2003-11-11 18:45:38  No: 109875

早速の回答ありがとうございます。

ご指摘のとおり、XMLそのものが間違えていました。
ただ、同じファイルでも家のPCでは開けるのに、会社のPCでは開けませんでした。
これってIEのバージョンに依存されたりするのでしょうか?

それとも、マクロで実行しているので
EXCELのバージョンなのでしょうか?

あと、メソッドの違いについて質問なのですが、
selectSingleNodeと、selectNodes
の違いって何なんでしょうか?

質問ばかりですいません。
よろしくお願いいたします。


魔界の仮面弁士  2003-11-11 20:35:55  No: 109876

> ただ、同じファイルでも家のPCでは開けるのに、会社のPCでは開けませんでした。
具体的にはどのような内容のXMLで、XML中のどの部分に問題があったのでしょうか?

> これってIEのバージョンに依存されたりするのでしょうか?
IEのバージョンというよりも、XMLパーサのバージョンに依存する事があります。

> あと、メソッドの違いについて質問なのですが、
> selectSingleNodeと、selectNodes
> の違いって何なんでしょうか?
まず、どちらも標準のAPIではありません。Microsoftの独自拡張命令です。
機能としては、「XSLPattern(またはXPath)にて指定したノードを返す」という物です。

後者がselectNodeではなく、selectNodesと[複数形]になっている事からも想像できますように、前者は「単一のノード」を返し、後者は「複数のノード」を返します。
指定された条件に一致するノードが複数あった場合、後者はそれら全てをまとめたコレクション(IXMLDOMNodeListインターフェイス)を返しますが、前者は先頭のノードだけを返します。
また、指定したノードが無い場合は、前者は Nothing を返します。詳細はSDKを参照してみてください。

  Set X = 〜.selectSingleNode(S)
  If X Is Nothing Then
      MsgBox "見つからない"
  End If

  Set X = 〜.selectNodes(S)
  If X.length = 0 Then
      MsgBox "見つからない"
  End If


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加