XMLのスコープの範囲について教えてください

このQ&Aのポイント
  • XMLのスコープの範囲について詳しく教えてください。
  • あるXMLの要素のスコープは、開始タグから終了タグまでの範囲です。
  • スコープ内で定義された名前空間は、そのスコープ内でのみ有効です。
回答を見る
  • ベストアンサー

XMLのスコープの範囲を教えてください。

1:<Response> 2: <header:Header xmlns:header="http://ABC"> 3:  <Args> 4:   <Arg key="User-Agent" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)">true</Arg> 5:  </Args> 6:  <Status>Success</Status> 7:  <StatusMsg /> 8: </header:Header> 9:</Response> 以上のようなXMLがあると、2行目のxmlns:header="http://ABCのスコープは、8行目まで全て続くと考えてよろしいのでしょうか? 私は、 1:<Response> 2: <header:Header xmlns:header="http://ABC"> 3:  <header:Args> ←変更 4:   <header:Arg key="User-Agent" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)">true</header:Arg>  ←変更 5:  </header:Args> ←変更 6:  <header:Status>Success</header:Status>  ←変更 7:  <header:StatusMsg />  ←変更 8: </header:Header> 9:</Response> もしくは 1:<Response> 2: <Header xmlns="http://ABC"> ←変更 3:  <Args> 4:   <Arg key="User-Agent" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)">true</Arg> 5:  </Args> 6:  <Status>Success</Status> 7:  <StatusMsg /> 8: </Header> ←変更 9:</Response> って書くのが普通ではないのかなと考えています。 どうかご教授お願いします。

  • XML
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#39970
noname#39970
回答No.1

その認識で問題ないと思われる。 質問の文書では2行目でheaderのnamespaceが宣言されているがその内側は名無し(#default)となっているのでこの場合はheader namespaceのタグでは無い事になる。 headerに属する為には想定した2通りどちらかの形になるが 前者の記述でnamespaceを明確化してある方が正しい書き方だったと思う。

関連するQ&A

  • phpのsimplexml_load_fileについて

    あるXMLのデータをsimplexml_load_fileで実行すると SimpleXMLElement Object ( [Body] => SimpleXMLElement Object ( ) ) という内容が返ってきます。 しかし、そのXMLのデータの内容は <?xml version="1.0" encoding="UTF-8" ?> - <Response> - <header:Header xmlns:header="http://api.rakuten.co.jp/rws/rest/Header"> - <Args> <Arg key="User-Agent" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ) Sleipnir/2.5.12">true</Arg> <Arg key="apiVersion" value="111">true</Arg> <Arg key="operation" value="ItemSearch">true</Arg> <Arg key="version" value="2007-10-25">true</Arg> </Args> <Status>Success</Status> <StatusMsg /> </header:Header> - <Body> - <itemSearch:ItemSearch xmlns:itemSearch="http://api.rakuten.co.jp/rws/rest/ItemSearch/2007-10-25"> <count>19244</count> <page>1</page> <first>1</first> <last>30</last> <hits>30</hits> <carrier>0</carrier> <pageCount>100</pageCount> - <Items> - <Item> <itemName>内容1</itemName> <itemCode>crucian:10001064</itemCode> <itemPrice>1</itemPrice> <itemCaption>内容2</itemCaption> <itemUrl>URL1</itemUrl> <affiliateUrl /> <imageFlag>1</imageFlag> <smallImageUrl>画像1</smallImageUrl> <genreId>403911</genreId> </Item> ------------------------------ こんな感じのデータです。 ブラウザでこのXMLを表示させても、この様に表示されます。 SimpleXMLElement Object ( [Body] => SimpleXMLElement Object ( ) ) この結果が意味しているものは、[Body]以下のものは何も返ってきていないという事なのでしょうか? ここから、普通に内容1・内容2・URL1・画像1(上記のXMLデータの内容)を取り出すには、どうすればよいのでしょうか? 教えて頂けると非常に助かります。

    • 締切済み
    • PHP
  • linq で 楽天ウェブサービスのXMLの処理で

    vb2008を使って、楽天ウェブサービスから取得したXMLデータを処理しようとしています。 楽天ウェブサービス 楽天ジャンル検索API http://webservice.rakuten.co.jp/api/genresearch/ しかし、<genreSearch:GenreSearch>の処理がうまくいかずに困っています。 Dim elementRakuten = XElement.Load(strRakutenGenreSearchUrl) でデータを受けた後、次のように取り出そうとしました。 elementRakuten.Element("Body").Element("genreSearch:GenreSearch") しかし「':' 文字、16 進数値 0x3A を名前に含むことはできません。」というエラーが出てしまいます。 欲しい情報は<child>の一覧です。 データはこのような感じです。 どのように処理すべきなのかご教授お願いします。 <Response> <header:Header xmlns:header="http://api.rakuten.co.jp/rws/rest/Header"> <Args> <Arg key="developerId" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx">true</Arg> <Arg key="apiVersion" value="20">true</Arg> <Arg key="operation" value="GenreSearch">true</Arg> <Arg key="version" value="2007-04-11">true</Arg> <Arg key="genreId" value="0">true</Arg> </Args> <Status>Success</Status> <StatusMsg></StatusMsg> </header:Header> <Body> <genreSearch:GenreSearch xmlns:genreSearch="http://api.rakuten.co.jp/rws/rest/GenreSearch/2007-04-11"> <child> <genreId>101240</genreId> <genreName>CD・DVD・楽器</genreName> <genreLevel>1</genreLevel> </child> <child> <genreId>100804</genreId> <genreName>インテリア・寝具・収納</genreName> <genreLevel>1</genreLevel> </child> <child> <genreId>551177</genreId> <genreName>メンズファッション・靴</genreName> <genreLevel>1</genreLevel> </child> </genreSearch:GenreSearch> </Body> </Response>"

  • PHP5で名前空間を取り扱う

    楽天ウェブサービスの楽天トラベルキーワード検索APIを、PHP5で利用しようとしています。    ■楽天トラベルキーワード検索API     http://webservice.rakuten.co.jp/api/keywordhotelsearch/ 出力パラメータの一部は名前空間で定義されており、下記の参考Webサイトのコーディング例に従ってソースを実行しましたが、children関数を実行する行で、 "Fatal error: Call to a member function children() on a non-object in " と表示されてしまいました。 どのようにコーディングするのが正しいのか、教えていただけないでしょうか。 ■参考にしたWebサイト 「IBM PHPでのSimpleXML 処理」 http://www-06.ibm.com/jp/developerworks/xml/library/x-simplexml.shtml?ca=drs ■実行ソース $xml = simplexml_load_file($restURL) or die("XMLパースエラー"); $cd = $xml->Response->header->children('http://api.rakuten.co.jp/rws/rest/Header'); ■実行環境  PHP Version 5.1.4  Apache 2.0 Handler ■xmlの構造 <?xml version="1.0" encoding="UTF-8" ?> <Response> <header:Header xmlns:header="http://api.rakuten.co.jp/rws/rest/Header"> <Args> <Arg key="User-Agent" value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)">true</Arg> <Arg key="developerId" value="****">true</Arg> <Arg key="affiliateId" value="****">true</Arg> <Arg key="operation" value="KeywordHotelSearch">true</Arg> <Arg key="version" value="2007-04-11">true</Arg> <Arg key="keyword" value="アートホテルズ札幌">true</Arg> </Args> <Status>Success</Status> <StatusMsg /> </header:Header> <Body> <keywordHotelSearch:KeywordHotelSearch xmlns:keywordHotelSearch="http://api.rakuten.co.jp/rws/rest/KeywordHotelSearch/2007-04-11"> <hotelSimple> <hotelNo>5903</hotelNo> <hotelName>アートホテルズ札幌</hotelName> <areaSum /> <hotelSpecialSum /> <middleClassCode>hokkaido</middleClassCode> <smallClassCode>sapporo</smallClassCode> <hotelInformationUrl>http://img.travel.rakuten.co.jp/image/tr/api/kw/JBe8h/?f_no=5903</hotelInformationUrl> <hotelAffiliateUrl>http://***/hgc/04230ff1.13a55c09.04230ff2.eed97e0f/?pc=http%3A%2F%2Fimg.travel.rakuten.co.jp%2Fimage%2Ftr%2Fapi%2Fkw%2FJBe8h%2F%3Ff_no%3D5903</hotelAffiliateUrl> </hotelSimple> <recordCount>1</recordCount> </keywordHotelSearch:KeywordHotelSearch> </Body> </Response>

    • ベストアンサー
    • PHP
  • 2ちゃんねるに書き込めないんですが

    2ちゃんねるに書き込もうとしてるんですが 書きこみが終わりました。 画面を切り替えるまでしばらくお待ち下さい。 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; msn Optimized IE build03;JP; .NET CLR 3.0.04506.30; MEGAUPLOAD 2.0; msn Optimized IE build03;JP) とでていつまでも画面が切り替わらず書き込むことができません。 何故なんでしょうか?教えてください。

  • ホスト情報に詳しい方へ質問です。

    荒らし対策で、ログをとっています。 ホスト情報の中の、 mozilla/4.0_(compatible__msie_6.0__windows_98__●某会社名_isc mozilla/4.0_(compatible__msie_6.0__windows_nt_5.1__●.net_clr_1.0.3705 mozilla/4.0_(compatible__msie_6.0__windows_98__●t312461 mozilla/4.0_(compatible__msie_6.0__windows_98__●q312461 ●以下の部分は何を意味しているのですか? 教えてください。

  • ユーザーエージェントがおかしい…のかな?

    いつからかわかりませんが、Yahoo!のトップページが、IEで見ているのにFirefoxと同じ表示になってしまいます。 また、Microsoft Updateも 更新プログラムの入手にこのサイトをご利用いただき、ありがとうございます。 この Web サイトは、Microsoft Windows オペレーティング システムにのみ連動できるように設計されています。 ・・・と表示されてはじかれます。 ひょっとしてユーザーエージェントがおかしいのかなあ?と思ってユーザーエージェントを確認すると… Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; msn Optimized IE build03;JP; FDM; .NET CLR 3.0.04506.30) となっています。前から長いUAだとは思っていたけど、さらに長くなっていました。 前はUser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com)の部分がなかったと思うのですが…それでUAを編集する方法を知りたいのですが、レジストリのどこをいじればよろしいのでしょうか?

  • simplexml_load_file でデータがうまく取得できない

    楽天ウェブサービスの楽天トラベルキーワード検索APIを、 PHP5でsimplexml_load_fileにより利用しているのですが、うまくゆきません。 ■楽天トラベルキーワード検索API http://webservice.rakuten.co.jp/api/keywordhotelsearch/ 1.現象 simplexml_load_fileで取得したデータをprint_rで表示させると、下記のように、ヘッダ(共通パラメーター)の部分が取得できません。 しかしながら、ブラウザからリクエストURLを直打ちすると、正常にデータが取得できていることがわかります。 ■print_rでの出力結果 -------------------------------------------------- SimpleXMLElement Object ( [Body] => SimpleXMLElement Object ( ) ) -------------------------------------------------- ■コーディング $xml = simplexml_load_file($restURL) or die("XMLパースエラー"); echo "<pre>"; print_r($xml); echo "</pre>"; ■ブラウザにリクエストURLを直打ちして出力した結果 -------------------------------------------------- <Response>  <header:Header>   <Args>    <Arg key="User-Agent" value="Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6">true</Arg>    <Arg key="developerId" value="****">true</Arg>    <Arg key="affiliateId" value="****">true</Arg>    <Arg key="operation" value="KeywordHotelSearch">true</Arg>    <Arg key="version" value="2007-04-11">true</Arg>    <Arg key="keyword" value="アートホテルズ札幌">true</Arg> </Args> <Status>Success</Status> <StatusMsg/> </header:Header> <Body> <keywordHotelSearch:KeywordHotelSearch> <hotelSimple> …… -------------------------------------------------- なぜ、simplexml_load_fileで取得した場合がうまくいかないのか原因がわかりません。 ブラウザ直打ちの場合も、simplexml_load_fileの場合もリクエストURLは同一であることを確認しています。 ちなみに、楽天商品検索APIと楽天トラベル地区コードAPIは既に利用していますが、正常にデータが取得できています。 楽天商品検索APIと楽天トラベル地区コードAPIと、楽天トラベルキーワード検索APIとでの 出力結果の差異は、正常にデータ取得できているAPIの共通パラメーターと呼ばれる部分の名前が、 "<Header>"となっていることです。 楽天トラベル地区コードAPIの場合は、 " <header:Header xmlns:header="http://api.rakuten.co.jp/rws/rest/Header"> " です。 これが原因なのかなとも思いましたが、対処法がわかりません。 どなたかアドバイスをお願いいたします。

    • 締切済み
    • PHP
  • $_SERVER['HTTP_USER_AGENT'] で取得できる値の読み方

     PHPに限った話でもないんですが・・・。  $_SERVER['HTTP_USER_AGENT'] で取得できる値の読み方を教えてください。 IE Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) NN Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) Opera Opera/9.01 (Windows NT 5.1; U; ja)  compatibleとか、Gecko/20030624とか、それぞれ、どのような意味を持っているのでしょうか?

    • ベストアンサー
    • PHP
  • HTTP_USER_AGENTの変更の仕方

    宜しくお願い致します。 私のHTTP_USER_AGENTが (Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 1.1.4322) なのですが、このHTTP_USER_AGENTを変更する方法はあるのでしょうか? ある掲示板を見ていて、好きな文字に変えたりしていたのでどうやってやるんだろう? と疑問に思っています、ご存知の方いましたら教えて下さい、宜しくお願いします。

  • 個人

    これで個人とくていできますか? 218.136.107.3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

専門家に質問してみよう