xml,获取日历数据(davical calendar)

时间:2018-05-16 13:52:04

标签: php xml caldav

我想从XML获取calendar-data

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 :(得分:0)

命名空间前缀很可能会导致访问问题,因为它会创建非法属性。您可以尝试使用以下方法创建数组:

$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解析器的名称,前缀可能会被自动删除/转义,因此可能会以不同的名称找到您的元素。