2011-06-10 8 views
2

I Iが解析しようとしている次のXMLコードを持っているが、私はPHPでのデータの一部をトラバースする方法の確信している:トラバースXML PHP

<entry> 
    <id>http://data.treasury.gov:8001/Feed.svc/DailyTreasuryYieldCurveRateData(5360)</id> 
    <title type="text"></title> 
    <updated>2011-06-09T20:15:18Z</updated> 
    <author> 
     <name /> 
    </author> 
    <link rel="edit" title="DailyTreasuryYieldCurveRateDatum" href="DailyTreasuryYieldCurveRateData(5360)" /> 
    <category term="TreasuryDataWarehouseModel.DailyTreasuryYieldCurveRateDatum" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
    <content type="application/xml"> 
     <m:properties> 
     <d:Id m:type="Edm.Int32">5360</d:Id> 
     <d:NEW_DATE m:type="Edm.DateTime">2011-06-01T00:00:00</d:NEW_DATE> 
     <d:BC_1MONTH m:type="Edm.Double">0.04</d:BC_1MONTH> 
     <d:BC_3MONTH m:type="Edm.Double">0.05</d:BC_3MONTH> 
     <d:BC_6MONTH m:type="Edm.Double">0.11</d:BC_6MONTH> 
     <d:BC_1YEAR m:type="Edm.Double">0.18</d:BC_1YEAR> 
     <d:BC_2YEAR m:type="Edm.Double">0.44</d:BC_2YEAR> 
     <d:BC_3YEAR m:type="Edm.Double">0.74</d:BC_3YEAR> 
     <d:BC_5YEAR m:type="Edm.Double">1.6</d:BC_5YEAR> 
     <d:BC_7YEAR m:type="Edm.Double">2.28</d:BC_7YEAR> 
     <d:BC_10YEAR m:type="Edm.Double">2.96</d:BC_10YEAR> 
     <d:BC_20YEAR m:type="Edm.Double">3.83</d:BC_20YEAR> 
     <d:BC_30YEAR m:type="Edm.Double">4.15</d:BC_30YEAR> 
     <d:BC_30YEARDISPLAY m:type="Edm.Double">4.15</d:BC_30YEARDISPLAY> 
     </m:properties> 
    </content> 
    </entry> 

私はこれまでのところを得ることができます私はこのようなコンテンツの内側にあるものにアクセスするにはどうすればよい

entry->content->m:properties 

:以下はコロンを持つため、エラーをスローしたよう

entry->content 

としてd:NEW_DATEとしますか?

+0

を私は名前空間(メートル、あなたはDOMパーサを使用していると仮定しています:)は若干異なって扱われます。 – Devraj

+1

これらは名前空間です。名前空間のメモにアクセスするには、特別なことをしなければなりません。あなたはsimplexmlを使っていますか? –

+0

参照してくださいhttp://stackoverflow.com/questions/1133897/how-do-i-parse-xml-containing-custom-namespaces-using-simplexml –

答えて

6

です名前空間のコンテンツにアクセスします。

entry->content->children('m', true)->properties 

またはdにアクセスするには:NEW_DATEメートルにアクセスするための

entry->content->children('m', true)->properties->children('d', true)->NEW_DATE 

またはさらに一歩:type属性

entry->content->children('m', true)->properties->children('d', true)->NEW_DATE->attributes('m', true)->type 
+0

ありがとう、私は子どものスキーマのURI()も、URIを含めることなくそれを行う方法を理解しようとしていました! 2つの方法のスピードに違いがあるかどうか知っていますか? – Choy

0

あなたは SimpleXML

のSimpleXMLの機能を使用することができます。しかし、私のfavクラスを使用すると、子供( 'プレフィックス'、真)と属性( 'プレフィックス'、true)の機能を使用することができますのSimpleXMLでDOMDocument