SimpleXMLElement使用字符串

时间:2014-03-09 00:04:02

标签: php xml string

我想用数据创建一个新的SimpleXMLElement。当我将以下链接中的数据放入代码中时,我得到下一个错误:致命错误:未捕获异常'Exception',消息'String无法解析为XML

编码数据可在此处找到:http://www.interwebmedia.nl/dataxi/base64.txt

解码数据:http://www.interwebmedia.nl/dataxi/data.txt

<?php
str = 'encodeddata';
//echo htmlspecialchars(base64_decode($str),ENT_QUOTES);
$decoded = htmlspecialchars(base64_decode($str),ENT_QUOTES);
$xml = new SimpleXMLElement($decode);
echo $xml->asXML();
?> 

1 个答案:

答案 0 :(得分:1)

我认为您已尝试使用HEREDOC syntax(或看到其他人使用它)但完全误解了它。

HEREDOC语法是引用字符串的替代方式,而不是"'。它对于硬编码XML块非常有用,因为它的作用类似于双引号,但让我们在里面使用双引号,如下所示:

$my_xml_string = <<<XML
<some_xml>
<with multiple_lines="here" />
</some_xml>
XML;

该代码与此完全相同:

$my_xml_string = "
<some_xml>
<with multiple_lines=\"here\" />
</some_xml>
";

你所做的是采用文字字符串"<<<"并将其添加到你的XML上,给你一个这样的字符串:

$my_xml_string = "<<<XML
<some_xml>
<with multiple_lines=\"here\" />
</some_xml>
XML";

或者在您的示例中,字符串"<<<XML<data>XML"

就XML解析器而言,你只是在字符串的开头和结尾添加了一堆垃圾,所以它正确地抱怨它不是一个有效的XML文档。