2012-03-19 2 views
1

В течение жизни я не могу найти информацию о том, как использовать SimpleXML для синтаксического анализа со специальными символами.Escape символов для PHP и SimpleXML

У меня есть XML Я пытаюсь разобрать, но PHP явно не нравится:

<?xml version="1.0" encoding="UTF-8"?> 
<calendar-multiget xmlns:D="DAV:" xmlns="urn:ietf:params:xml:ns:caldav"> 
    <D:prop> 
    <D:getetag/> 
    <calendar-data/> 
    </D:prop> 
    <D:href>/davical/caldav.php/rwr26/home/c9bfc6b0-064e-4316-83fe-753db34e67ee.ics</D:href> 
    <D:href>/davical/caldav.php/rwr26/home/4e6e3500e89673.63357057.ics</D:href> 
    <D:href>/davical/caldav.php/rwr26/home/4e6e42d394f9e5.08299254.ics</D:href> 
</calendar-multiget> 

Я не могу сделать $D:href = new SimpleXMLElement($xmlstr);. И XPath тоже не доволен этим, полагая, что я делаю это правильно. Может ли кто-нибудь указать, что я здесь делаю неправильно?

+1

Вы не можете использовать специальные символы в ваших имен переменных, но не нужно. Можете ли вы подробнее объяснить, что вы пытаетесь сделать? –

+0

Я пытаюсь получить информацию, содержащуюся между тегами . Я не могу изменить сам XML, поскольку он является частью ответа CalDav с сервера Davical. – user978122

+0

Покажите нам немного больше, используя SimpleXMLElement, чтобы проанализировать пример и где вы столкнулись с проблемами и сообщениями, которые вы получаете. Я собираюсь предположить, что двоеточие в '$ D: href' ошибочно ре: PHP счастье. http://www.php.net/manual/en/language.variables.basics.php – dlamblin

ответ

1

Если вы посмотрите на basics, вы увидите, что поместить двоеточие внутри имени переменной недопустимо. Но, возможно, если бы вы показали немного больше, мы бы лучше поняли, что не работает.

+0

Исправлено. $ xml = " <календарь-данные /> /davical/caldav.php/rwr26/home/c9bfc6b0-064e-4316-83fe-753db34e67ee.ics /davical /caldav.php/rwr26/home/4e6e3500e89673.63357057.ics /davical/caldav.php/rwr26/home/4e6e42d394f9e5.08299254.ics «; $ root = новый SimpleXMLElement ($ xml); foreach ($ root-> xpath ('// D: href') в виде $ node) { echo $ node. "
"; } – user978122

+0

Извините, что тратишь свое время. XML-материал PHP немного чуждо мне. – user978122

+0

Я рад, что помог. – dlamblin

Смежные вопросы