XMLファイルの取得について

解決


にんにん  2006-05-26 21:20:51  No: 95525

<?xml version="1.0" encoding="UTF-8" ?> 
 <result>
  <status>success</status> 
 <file>
  <ccd>AAAAAAAAAAAA</ccd> 
  <count>1</count> 
  </file>
 <file>
  <ccd>BBBBBBBBBBBB</ccd> 
  <count>2</count> 
  </file>
 <file>
  <ccd>DDDDDDDDDDDD</ccd> 
  <count>3</count> 
  </file>
 <file>
  <ccd>EEEEEEEEEEEE</ccd> 
  <count>1</count> 
  </file>

上記XMLファイルから
ccdの値とcountの値を2つを取得したいのですがうまくいきません。
どのすればよいか・・・、ご指摘お願いします。

ccdのみ取得の場合、以下のロジックで成功しています。

   Dim MSxml As Object

    Set MSxml = CreateObject("Microsoft.XMLHTTP")
    MSxml.Open "POST", "http://www.xxx.net/XXX/XXXsearch.do", False
    MSxml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    MSxml.send ("ccount=" & strGroupid & "&pass=" & strPass)

    Set xmldoc = CreateObject("Microsoft.XMLDOM")
    i = 0
    xmldoc.async = "false"
    bSuccess = xmldoc.Load(GPSxml.responseXML)
    
    If bSuccess Then
        
        For Each Node In xmldoc.documentElement.getElementsByTagName("file")
      Debug.Print Node.Text
        end for
  end if


魔界の仮面弁士  2006-05-26 21:43:34  No: 95526

> 上記XMLファイルから
あれれ。<?xml の前に、余計な空白が含まれていたり、result 要素が
閉じられていないなど、XML としては不正な形式になっているような。(^^;

> xmldoc.async = "false"
何故に文字列?
async プロパティのデータ型は、String ではなく、Boolean ですよね。

> end for
そのような構文はありません。(^^;

> 以下のロジックで成功しています。
コードは間違っていますが、ロジックは概ねあっていると思いますよ。

file要素の下位要素を、個別に取り出すのであれば、
>  Debug.Print Node.Text
の部分を、
   Debug.Print Node.childNodes(0).text
   Debug.Print Node.childNodes(1).text
だとか、
   Debug.Print Node.Node.getElementsByTagName("ccd")(0).text
   Debug.Print Node.Node.getElementsByTagName("count")(0).text
などに置き換えてみると良いでしょう。

あるいは、
  For Each Node In xmldoc.selectNodes("//count|//ccd")
    'Debug.Print Node.tagName
    Debug.Print Node.text
  Next
などといった書き方も使えるかも知れません。


にんにん  2006-05-26 22:06:54  No: 95527

解決できました。一部間違いもありすいませんでした・・・。

   Dim MSxml As Object

    Set MSxml = CreateObject("Microsoft.XMLHTTP")
    MSxml.Open "POST", "http://www.xxx.net/XXX/XXXsearch.do", False
    MSxml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    MSxml.send ("ccount=" & strGroupid & "&pass=" & strPass)

    Set xmldoc = CreateObject("Microsoft.XMLDOM")
    i = 0
    xmldoc.async = "Boolean"
    bSuccess = xmldoc.Load(GPSxml.responseXML)
    
    If bSuccess Then
        
        For Each Node In xmldoc.documentElement.getElementsByTagName("file")
          Debug.Print Node.childNodes(0).text
          Debug.Print Node.childNodes(1).text
        Next
    end if

で取得できました。


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

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






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