XML,获取日历数据(DAVICAL 日历)



我想从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.

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

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

最新更新