• 締切済み

XMLファイルのattribute値がうまく取得できません。。

ASP(VBScript)内の処理でwebからXMLファイルをLoadし、 そこからattribute値を取得しようとしているのですが、 どうもうまくいきません。。 XMLファイルのデータ取得自体はうまく出来ています。 -------------------------------------- ' 以下、LoadしたXML本文です。 <?xml version="1.0" encoding="Shift-JIS"?> <info> <title>タイトル1</title> <text no="100"> <--この100が取得したい <note>本文1</note> </text> <text no="200"> <--この200が取得したい <note>本文2</note> </text> <title>タイトル2</title> <text no="100"> <--この100が取得したい <note>本文1</note> </text> <text no="200"> <--この200が取得したい <note>アナログ本文</note> </text> </info> ' 以下、VBScript本文です <% language = "VBscript" %> <% dim objXml Set objXml = Server.CreateObject("Microsoft.XMLDOM") objXml.load("http://localhost/text.xml") Call Disp(objXml.childNodes) Public Sub Disp(ByRef Nodes) Dim cNode For Each cNode In Nodes If cNode.parentNode.nodeName = "text" Then If Not cNode.attributes Is Nothing Then response.write cNode.getAttribute("no") '<-- 表示されない。。 End If End If Next End Sub %> -------------------------------------- 最終的にやりたい事としては、 DBから text no を取得して、その no が一致したものを表示、 といった事をやりたいと考えています。 (完全に不一致の場合は、タイトルも表示させない) 取り急ぎ、表示されない理由がどなたかお分かりでしたら ご教授願えないでしょうか・・・? 以上、よろしくお願いいたします。

みんなの回答

  • KDASH-XP
  • ベストアンサー率46% (63/136)
回答No.1

実行していないので、殆ど直感ですが objXml.childNodes で取得したノードリストがtitle要素や、text要素のリストだから、それの親ノードの名前を拾っても常にinfoを返すだけなのでは? と思いました。 間違っていたらごめんなさい。

chic_punk
質問者

お礼

すみません、自己解決しました!! cNode.parentNode.getAttribute("no") で取得できました!!

chic_punk
質問者

補足

ご回答ありがとうございます。 何となくそのような気がしていたのですが、 恥ずかしながら、正しい文法(コーディング方法)が 分からないのです、、 つきましては、恐れ入りますが、その場合、 具体的な記述はどのようにすれば良いのか 差し支えなければご教授願えないでしょうか・・・? もしくは、この件についての何か良い文献をご存知でしたら そちら、お教え願えないでしょうか? 何卒、よろしくお願いいたします。

関連するQ&A

  • xml

    今契約してるサーバーがSQLをつけるとものすごい金額になってしまうので。XMLに挑戦中です。 作ってみたのですが、ソースが間違ってる?のか表示できません、教えてください. name.xml <?xml version="1.0" encoding="shift-jis"?> <test no="1"> <name>test</name> <no>10</no> <tel>123-456-789</tel> </test> test.php <html> <head> <title>sample1</title> </head> <body> <?php $doc->load("name.xml"); $name = $doc->selectSingleNode("test"); $list = $name->selectNodes("*"); $no = $list->item(1); $text = " 番号 " . $no . "<br>"; print $text; ?> </body> </html>

    • ベストアンサー
    • PHP
  • flashでPHPファイル(実際は該当するxmlを呼ぶ)を読み込む方法について

    FLASH(AS2.0)でPHPファイル(実際は該当するxmlを呼ぶ)を読み込むようにするにはどのようにしたらいいのですか? 現状では、ローカルのxmlファイルを読み込むように、 下記のように書いてあります。 var objXML:XML = new XML(); objXML.ignoreWhite = true; objXML.onLoad = function(success:Boolean):Void { if(success) { loadXML(this); } } var menuArray:Array = new Array(); // function loadXML(objXML:XML):Void { var dataNode:XMLNode = objXML.firstChild; var menuNodes:Array = dataNode.childNodes; for(var i:Number = 1; i <= menuNodes.length; i++) { var menuNode:XMLNode = menuNodes[i-1].childNodes; var Name:String = menuNode[0].firstChild.nodeValue; menuArray[i] = { title:Name}; } myVars(menuArray); } objXML.load("sample.xml"); この状態から、外部<http://aaaa/sample.php>URLに アクセスして、PHPファイルを読み込むにはどのようにしたら よいのか全くわかりません。 objXML.load("sample.xml"); 上記の()の中に直接URLを挿入すると、 ローカルでは確認できるのですが、 ファイルをアップすると、まったく読み込めてはいません。 ActionScriptは全くわからないので、ご教授よろしくお願いいたします。

  • VBSでxmlの値を書き換えたい

    お世話になります。 VBScriptで作成しています。 A.xmlの「sx」の値を全て200にしたいと思っております。 A.xmlの値を抜き取って、OKフォルダに複製する処理は 作ったのですが、どのようにして、sxを指定・その中の値を 変更するのかわかりません。 お手数ですが、ご教授お願いいたします。 ------------------A.xml---------------------------- <?xml version="1.0" encoding="UTF-8"?> <links> <link id="0" name="" title=""> <sx>145</sx> <sy>142</sy> </link> <link id="1" name="" title=""> <sx>495</sx> <sy>142</sy> </link> <link id="2" name="" title=""> <sx>155</sx> <sy>510</sy> </link> </links> --------------------------------------------------- ------スクリプト------------------------------------------------ Set Fso = CreateObject("Scripting.FileSystemObject") Set objXML = CreateObject("Msxml2.DOMDocument.3.0") ' カレントディレクトリ str = WScript.ScriptFullName Set obj = Fso.GetFile( str ) Set obj = obj.ParentFolder str = obj.Path ' XML を読み込み objXML.load( str & "\A.xml" ) ********************************************************** '''ここで、sxの属性の値を変更したい ********************************************************** ' XML を保存 objXML.save( str & "\OK\A.xml" ) ------------------------------------------------------

  • perl XMLの入れ子取得方法

    下記のようなツリー状のXMLから、親となっている情報と子の情報を分けて取得したいのですが、testプログラムで、子だけは取れましたが親の情報だけ取り出す方法が分かりません。どなたか取得方法、サンプルなどを教えていただけないでしょうか? --------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:review="http://www.test.com/"> <channel> <title>test</title> <language>ja</language> <item> <number>1</number> <title>親レビュータイトル</title> <item>  <number>3</number>  <title>子レビュー2タイトル</title> </item> <item>  <number>2</number>  <title>子レビュー1タイトル</title> </item> </item> </channel> </rss> ---------------------------------------    #testプログラム #!/usr/local/bin/perl use XML::LibXML; #$rss は上記のXMLの内容 $parser = XML::LibXML->new; $doc = $parser->parse_string($rss); @nodes = $doc->findnodes ( "//*[local-name()='item']/*[local-name()='item']" ); for $node (@nodes){ $item ->{'number'} = Henkan::henkan( "-Wexm0",$node->findvalue("./number/text()")); $item ->{'title'} = Henkan::henkan( "-Wexm0",$node->findvalue("./title/text()")); print "[$item ->{'number'}]\n"; print "[$item ->{'title'}]\n"; } ---------------------------------------

  • 【緊急】xmlからデータの取得についての質問です。

    https://okwave.jp/qa/q10016550.html#answers の続きです。 自然言語処理について勉強しています。 Wikipediaのdumpデータからタイトルと本文を抜き出して処理をしようと思ってます。 xmlの処理について試しているのですが、エラーに見舞われて困っています。 プログラミングはあまり得意ではないです。    [やりたいこと] 1.wikipediaのdumpデータからタイトル(<title>~~~</title>の~~~部分)の取得。 2.同じように本文(<text>~</text>の~部分)の抽出 3.それらを処理するプログラム(こちらはできているのでこのプログラムに合わせて本文の内容を取得し、txtファイルにまとめたものが欲しい) これについてのプログラムを作成してますが難航しています。 ポインタについてはあまり得意ではないのでそこら辺の知識がないので困ってます。 ご助力お願いします。 ソースコードです。 =========================== #include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ int p,start,endt,endp,startp; char pb[5]; char line[BUFSIZ]; FILE *fp = fopen("jawiki-20211220-pages-articles-multistream1.xml", "r"); char title[BUFSIZ]; //FILE *gt=fopen("list_1.txt","r"); FILE *fw = fopen("get_text_c.txt", "w"); if ((NULL == fp)||(NULL== fw )){ printf("aboooooooooooooooooooooooooooot"); abort();//終了、ここがうまくいってない? } while (p = ftell(fp), fgets(line, BUFSIZ, fp)) { if (strstr(line, "<title>")){ pb[0] = p;//タイトルの始点 startp=(int)pb[0];//intに変換 } else if (strstr(line, "</title>")){ pb[3]=p;//タイトルの終点 pb[2]=p-pb[0];//タイトルのバイト数 fprintf(fw, "%zu \t %zu \n", pb[2], pb[3]); //pb2とpb3の観察。 fgets(line,pb[2],pb[0]);//タイトルを取得 printf("%s",line);//表示 fprintf(fw,"%s",line);//書き込み } else if (strstr(line, "</page>")){ pb[1] = p - pb[0]; //fwrite(pb, sizeof(size_t), 2, fw); // ... fprintf(fw, "%zu \t %zu \n", pb[0], pb[1]); //... テキスト形式で観察可能 } } fclose(fw); fclose(fp); } ================== これを実行しましたが、出力されるテキストは空で、すぐに終了しています。(dumpデータが重いので時間はかかるはず。) お願いします。

  • xmlから取得したurlをflash内で設定

    flash内に設置した複数のボタンに外部xmlから取得したurlを設定したいです。 検索したり過去の質問も見てましたが、いまいちわかりませんでしたのでご教授頂けたらと思います。 現在は↓のようになっています。 これですと1つしか読み込めないので、複数設定してそれぞれのリンクを設定したいと思っています。 わかる方いらっしゃいましたら何卒よろしくお願い致します。 xmlのソース(url.xml) <?xml version="1.0" encoding="UTF-8"?> <top> <menu> <title>url</title> <url>http://www.google.co.jp/</url> </menu> </top> FLASH内のスクリプト(フレーム) function startIndexMenu(success) { if (success == true) { rootNode = index_xml.firstChild; firstMenuNode = rootNode.firstChild; childMenuNode = firstMenuNode.firstChild; updateMenu(childMenuNode); } // end if } // End of the function function updateMenu(newMenuNode) { slideText = newMenuNode.firstChild.nodeValue; slideText_op = newMenuNode.nextSibling; urlNode = slideText_op.firstChild.nodeValue; nextMenuNode2 = firstMenuNode.nextSibling; slideText2 = nextMenuNode2.firstChild.nodeValue; nextMenuNode3 = nextMenuNode2.nextSibling; slideText3 = nextMenuNode3.firstChild.nodeValue; } // End of the function index_xml = new XML(); index_xml.onLoad = startIndexMenu; index_xml.load("url.xml"); index_xml.ignoreWhite = true; ボタンに設定してるスクリプト on (release) { getURL(_root.urlNode, ""); }

    • ベストアンサー
    • Flash
  • VBScriptを用いたXMLのデータ抽出に関して

    下記のsample.xmlから sample.xml ---------------------------------------------- <?xml version="1.0" encoding="utf-8" ?> <books> <item> <title>XML入門-第1巻</title> <price>2500</price> <isbn>1-1234-5678-X</isbn> <authors> <author>西谷 亮</author> </authors> <imgfile>1-1234-5678-X.gif</imgfile> </item> <item> <title>XML入門-第2巻</title> <price>2200</price> <isbn>1-1234-5678-0</isbn> <authors> <author>西谷 亮</author> <author>山田 太郎</author> </authors> <imgfile>1-1234-5678-0.gif</imgfile> </item> <item> <title>XML入門-第3巻</title> <price>3600</price> <isbn>1-1234-5678-1</isbn> <authors> <author>西谷 亮</author> <author>鈴木 次郎</author> </authors> <imgfile>1-1234-5678-1.gif</imgfile> </item> </books> ---------------------------------------------- 下記のtitle.vbsを用いて、「<title>」タグに表記された 書物のタイトルだけを抜き出します。 title.vbs ---------------------------------------------- 01 : Dim objDOM, rtResult 02 : 03 : Set objDOM = WScript.CreateObject("MSXML2.DOMDocument") 04 : rtResult = objDOM.load("Sample.xml") 05 : If rtResult = True Then 06 : procDispDatas objDOM.childNodes 07 : End If 08 : Set objDOM = Nothing 09 : 10 : Sub procDispDatas(objNode) 11 : Dim obj 12 : For Each obj In objNode 13 : If obj.nodeType = 3 and obj.parentNode.nodeName = "title" Then 14 : MsgBox obj.parentNode.nodeName & " : " & obj.nodeValue 15 : End If 16 : If obj.hasChildNodes Then 17 : procDispDatas obj.childNodes 18 : End If 19 : Next 20 : End Sub ---------------------------------------------- 上記の記述ではサブプロシージャprocDispDatas(objNode) にて、<title>タグの要素の数だけMsgBoxでタイトル名の メッセージボックスが表示されるかと思います。 これをひとつのメッセージでまとめるて表示するはどのように 記述すればよいでしょうか。 下記のメッセージの表示が理想です。 メッセージ ---------------------------------------------- title:XML入門-第1巻 title:XML入門-第2巻 title:XML入門-第3巻 ---------------------------------------------- お手数をおかけしますが、ご存知の方 ご教授いただけませんでしょうか>< よろしくお願いいたします。

    • 締切済み
    • XML
  • VBscriptでXMLデータの抽出に関する質問

    教えて下さい。以下のようなXMLファイルがあります。 <?xml version="1.0" encoding="Shift-JIS"?> <ROOT> <INFO> <NO>0001</NO> <NAME>ABC</NAME> <COMMENT> </COMMENT> <AGE>30</AGE> </INFO> </ROOT> これを以下のようにVBScriptにてデータを取り出したいです。 Dim DOM, docRoot, node, nodeList, i, m Dim objADO, objADO2 Dim objRS Dim sqlstmt, strSQL Dim no, comment 'DOMオブジェクト生成 Set DOM = CreateObject("Microsoft.XMLDOM") '同期モード DOM.async = True 'XMLを読み込む DOM.load("11.xml") 'ルートセット Set docRoot = DOM.documentElement 'ノードの設定 Set nodeList = docRoot.selectNodes("/ROOT/INFO") 'ループ For Each node In nodeList For i = 0 to node.ChildNodes.length - 1 Select case node.childNodes(i).nodeName case "NO" no = node.childNodes(i).firstChild.nodeValue case "COMMENT" comment = node.childNodes(i).firstChild.nodeValue End select Next Next ところがCOMMENTタグのようにデータが空のものがあると 「オブジェクトがありません」とエラーになります。 if Not IsNull(node.childNodes(i).firstChild.nodeValue) then というようにもやってみましたが、これでも同じエラーとなってしまいます。 何か方法はないでしょうか?アドバイスを宜しくお願いします。

    • ベストアンサー
    • XML
  • GoogleMapでxmlから10件のみ情報取得

    今、googlemapで、xmlに書き出されたデータをjavascriptで呼び出し、地図外に一覧を表示させています。 現在のスクリプトでは、xmlデータ全件取得されています。 マップ上のポイントは前件表示、一覧表示部分のみ10件のみ表示に変更させる場合の書き方がわかりません。 初心者なりに、色々とやってみたのですが、うまくいかず。。。 ご指導いただけると助かります。 ****************************************** <script type="text/javascript"> var map; function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById('map')); ・・・ } GDownloadUrl('http://○○.jp/map.xml', function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName('marker'); var shopList = document.getElementById('map_text'); ・・・ for (var i = 0; i < markers.length; i++) { var shop = markers[i].getAttribute('shop'); var text = markers[i].getAttribute('text'); ・・・ var marker = createMarker(point, shop, text, n, imgurl, linkurl, category, shopurl); var sidebarEntry = createSidebarEntry(marker,shop, text); map.addOverlay(marker); shopList.appendChild(sidebarEntry); } }); } function createMarker(point, shop, text, n, imgurl, linkurl, category, shopurl) { ・・・ } function createSidebarEntry(marker, shop, text) { var shopList = document.createElement('div'); shopList.id = "map_text"; var maplist =shop + '<br/>' + text;  ←※ここで呼び出される情報を10件に限定したい shopList.innerHTML = maplist; GEvent.addDomListener(shopList, 'click', function() { GEvent.trigger(marker, 'click'); }); return shopList; } </script> ******************************************

  • RSSのXMLロードで失敗してしまう

    RSSのデータを取得する、という処理を行いたいのですが、 文字コードの件でひっかかってしまっているようで なかなか前に進むことができません。 ************ // RSSの内容を取得する $rss_text = file_get_contents(※RSSのフィードURL); // RSSの文字エンコーディングを変換→再変換 $rss_text = mb_convert_encoding($rss_text, 'SJIS', 'UTF-8'); $rss_text = mb_convert_encoding($rss_text, 'UTF-8', 'SJIS'); $rss_text = preg_replace('/[\x00-\x1f]/', '', $rss_text); // RSSをパースする $rss_xml = new SimpleXMLElement($rss_text); if ($rss_xml) { // XML解析に成功した場合 // SimpleXMLElementオブジェクトからデータを取得 $items = $rss_xml->item; foreach($items as $item) { echo 'ID:'. $item->guid. '<br />'; echo 'リンク:'. $item->link. '<br />'; echo '日付:'. $item->pubDate. '<br />'; echo 'タイトル:'. $item->title. '<br />'; echo '本文:'. $item->description. '<br />'; } } ************ こういったコードを組んでいるのですが、現状では Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : attributes construct error in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Couldn't find end of Start Tag rss line 1 in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Extra content at the end of the document in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... このようなエラーが表示されてしまいます。 自分なりに文字コードを処理しているつもりではあるのですが、 他にも何かしなければならないことがあるのでしょうか? どうぞ知恵を貸していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP