2017-01-03 8 views
0

У меня есть источник XML, который, как представляется, использует некоторую разметку d2LogicalModel, и я действительно пытаюсь выяснить, как извлечь из нее любые данные с помощью SimpleXML PHP.Как получить доступ к данным XML через SImpleXML в PHP

Я включил вырезанную версию XML ниже: Как извлечь carParkIdentity? Как мне получить доступ к конкретному идентификатору?

Тогда я могу выяснить остальную информацию самостоятельно!

Спасибо!

<d2lm:d2LogicalModel xmlns:d2lm="http://datex2.eu/schema/1_0/1_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xalan="http://xml.apache.org/xslt" xmlns:java="http://xml.apache.org/xalan/java" modelBaseVersion="1.0" xsi:schemaLocation="http://datex2.eu/schema/1_0/1_0 http://datex2.eu/schema/1_0/1_0/DATEXIISchema_1_0_1_0.xsd"> 
    <d2lm:exchange>...</d2lm:exchange> 
    <d2lm:payloadPublication lang="en" xsi:type="d2lm:SituationPublication"> 
    <d2lm:situation id="CPN0017"> 
     <d2lm:situationRecord id="CPN0017_1" xsi:type="d2lm:CarParks"> 
     <d2lm:situationRecordCreationTime>2017-01-03T10:47:41</d2lm:situationRecordCreationTime> 
     <d2lm:situationRecordVersion>1</d2lm:situationRecordVersion> 
     <d2lm:carParkIdentity>Chapelfield, Chapelfield Road, N:CPN0017</d2lm:carParkIdentity> 
     <d2lm:carParkOccupancy>77.0</d2lm:carParkOccupancy> 
     <d2lm:carParkStatus>enoughSpacesAvailable</d2lm:carParkStatus> 
     </d2lm:situationRecord> 
    </d2lm:situation> 
    </d2lm:payloadPublication> 
</d2lm:d2LogicalModel> 
+0

Вы пытались вставить тот же заголовок в Google? Если нет, тогда вставьте, и вы получите много учебников и ответьте .http: //php.net/manual/en/simplexml.examples-basic.php –

+0

Затем, если все остальное не выполнено [Прочтите руководство] (http: // php .net/manual/en/simplexml.examples-basic.php) Код что-то, а затем вернуться, если у вас возникнут проблемы – RiggsFolly

+0

Я прочитал примеры и документацию для SimpleXML, но они, похоже, не работают для этого особая разметка, в которой я испытываю трудности! Возможно, я сформулировал вопрос неправильно - мне не нужна помощь с SimpleXML на базовом уровне, мне нужна помощь с использованием SimpleXML для этой конкретной странной разметки, с которой мне с минимальной удачей. – nomaki

ответ

1

Как просто, как этот кусок кода:

$xml = simplexml_load_file('/PATH/TO/YOUR/FILE.XML'); 

foreach ($xml->xpath('//d2lm:carParkIdentity') as $child) { 

    echo $child; 

} 

Кроме того, вы больше, чем можете взглянуть на XPath синтаксис here.

+0

Код, который я предоставил, возвращает значение d2lm: carParkIdentity, и вот что было вашим вопросом ... –

+0

Oh! Что происходит с двойными косыми чертами в начале? Это, чтобы избежать «:» посередине? Я предполагаю, что это то место, где я ошибался, поскольку я пытался получить к ним доступ, например: $ xml-> payloadPublication-> ситуация и т. Д.! Редактировать: Да, извините за предыдущий комментарий, предназначенный для продолжения комментария выше. Это отличное решение! – nomaki

+0

@nomaki. Это запрос XPath, который позволяет извлекать данные из XML-документов. Я обновил свой ответ со ссылкой на документацию XPath. –

Смежные вопросы