Обход XML в PHP - PullRequest
       22

Обход XML в PHP

2 голосов
/ 10 июня 2011

У меня есть следующий 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

Поскольку следующее выдает ошибку для двоеточия:

entry->content->m:properties 

Как мне получить доступ к содержимому внутри, например d: NEW_DATE?

Ответы [ 2 ]

6 голосов
/ 10 июня 2011

В SimpleXML вы можете использовать дочерние ('prefix', true) и атрибуты ('prefix', true) функции для доступа к содержимому пространства имен.

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

или для доступа к d: NEW_DATE

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

или еще один шаг для доступа к атрибуту m: type

entry->content->children('m', true)->properties->children('d', true)->NEW_DATE->attributes('m', true)->type
0 голосов
/ 10 июня 2011

Вы можете использовать функции SimpleXml SimpleXML

Но мой любимый класс DOMDocument

...