2012-03-19 162 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