я хочу получить calendar-data
из XML.
Источник XML:
<response>
<href>/caldav.php/admin/test/test.ics</href>
<propstat>
<prop>
<getcontenttype>text/calendar</getcontenttype>
<getetag>"674fb05966bc1eb50aa86a2c4ca40b4a"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
CREATED:20180510T122608Z
LAST-MODIFIED:20180511T130531Z
DTSTAMP:20180511T130531Z
UID:x7cnad21-40gt-ck6l-hseq-xfwwoinkr1tw
SUMMARY:Pazar Günü Test 2
TRANSP:OPAQUE
DESCRIPTION:Açıklama 2
CLASS:PUBLIC
DTSTART;VALUE=DATE:20180524
DTEND;VALUE=DATE:20180525
END:VEVENT
PRODID:-//Inf-IT//CalDavZAP 0.13.1//EN
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
Я могу получить тег, как это:
echo $item->propstat->prop->getatag;
Но я не могу получить calendar-data
,
Префикс пространства имен, скорее всего, вызовет проблему с доступом, поскольку создаст недопустимое свойство. Вы можете попытаться создать массив, вместо этого используя:
$xmlFromCalendar = ... // add your code to retrieve the XML data
$arrConverted= (array)simplexml_load_string($xmlFromCalendar);
После преобразования вы сможете получить доступ к элементу с синтаксисом массива:
print $arrConverted['propstat']['prop']['C:calendar-data'];
Прежде чем попытаться сделать var_dump($item);
и наблюдать за структурой сгенерированного XML-файла и, если вы можете найти элемент в нем. В зависимости от префиксов пространства имен анализатора XML, они могут автоматически удаляться / экранироваться, поэтому может оказаться, что ваш элемент может быть найден под другим именем.
Других решений пока нет …