2012-03-19 43 views
1

對於我而言,我無法找到任何有關如何使用SimpleXML來解析特殊字符的信息。用於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

你不能在變量名中使用特殊字符,但你不應該需要。你能解釋一下你想做什麼嗎? – 2012-03-19 19:17:25

+0

我正試圖獲取標籤之間的信息。我無法更改XML本身,因爲它是來自Davical服務器的CalDav響應的一部分。 – user978122 2012-03-19 19:19:27

+0

向我們展示一些使用SimpleXMLElement解析示例以及遇到問題和收到的消息的地方。我將假設'$ D:href'中的冒號存在錯誤:PHP幸福。 http://www.php.net/manual/en/language.variables.basics.php – dlamblin 2012-03-19 19:22:36

回答

1

如果你看看basics,你會發現把冒號放在變量名裏是無效的。但是如果你再多展示一下,我們可以更好地瞭解哪些功能無效。

+0

修正了它。 $ xml =「<?xml version = \」1.0 \「encoding = \」UTF-8 \「?> <日曆數據/> /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 = new SimpleXMLElement($ xml); foreach($ root-> xpath('// D:href')as $ node){ echo $ node。 「
」; } – user978122 2012-03-19 19:28:13

+0

對不起,浪費你的時間。 PHP的XML對我來說有些陌生。 – user978122 2012-03-19 19:28:44

+0

我很高興幫助。 – dlamblin 2012-03-19 19:40:00