プロが教える店舗&オフィスのセキュリティ対策術

simplexml_load_file()を使って

<?xml version="1.0" encoding="UTF-8" ?>
- <Response>
- <header:Header xmlns:header="http://test.com/">
</header:Header>
- <Body>
- <itemSearch:ItemSearch xmlns:itemSearch="http://test.com/">
<count>2000</count>
<page>1</page>
......

この<count>2000</count>
の「2000」を取り出すにはどうしたらよういのでしょうか?

echo $Xml->Response->Body->itemSearch->count;
このXML文書の構成様式が初めてで(ヘッダーが付いている)、いくらやっても
取得できないので宜しくお願い致します。

A 回答 (1件)

================Q3494329-1.xml=============


<?xml version="1.0" encoding="UTF-8" ?>
<Response>
<header:Header xmlns:header="http://test.com/">
</header:Header>
<Body>
<itemSearch:ItemSearch xmlns:itemSearch="http://test.com/">
<count>2000</count>
<page>1</page>
</itemSearch:ItemSearch>
</Body>
</Response>
=================
#!C:/Environment/PHP/v5.2.4/php-cgi.exe
<?php
//メモ
//以下、言っていること全て同じ。childrenメソッドを使う
//http://search.net-newbie.com/php/function.simple …
//http://search.net-newbie.com/php/ref.libxml.html …
//http://www.doyouphp.jp/php5/php5_simplexml.shtml
//名前空間の処理
//http://www.ibm.com/developerworks/jp/xml/library …
//等を参考にした。
header("Content-Type:text/plain;charset=UTF-8");

//LIBXML_NOWARNINGを指定しないと色々言われてしまった。
$root = simplexml_load_file('./Q3494329-1.xml','SimpleXMLElement',LIBXML_NOWARNING);

//名前空間接頭辞を使ってみましたが,以下でもOKです。count要素は「名前空間なし」なのでいったん戻す必要がある
//print $root->Body->children('http://test.com/',false)->ItemSearch-> children("")->count;
print $root->Body->children('itemSearch',true)->ItemSearch->children("")->count;

//>ヘッダーが付いている。
//多分Header要素のことでなく
//header:の部分だと思うんだけど,「ヘッダー」といわず
//「名前空間接頭辞」ときちんと言おう。せめて「header」と書いてほしかった
?>
    • good
    • 0
この回答へのお礼

勉強不足で意味が解りませんが、
いただいた構文を貼り付けましたら
取得できました!

ありがとうございます!

お礼日時:2008/11/21 11:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!