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