xml, получить данные календаря - PullRequest
0 голосов
/ 16 мая 2018

Я хочу получить 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.

1 Ответ

0 голосов
/ 16 мая 2018

Префикс пространства имен, скорее всего, вызовет проблему с доступом, так как создаст недопустимое свойство. Вместо этого вы можете попытаться создать массив, используя:

$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 могут автоматически удаляться / экранироваться, поэтому может оказаться, что ваш элемент может быть найден под другим именем.

...