【问题标题】:SimpleXMLElement using a string使用字符串的 SimpleXMLElement
【发布时间】:2014-03-09 00:04:01
【问题描述】:

我想用 data 创建一个新的 SimpleXMLElement 。当我将下面链接中的数据放入代码中时,出现下一个错误:致命错误:未捕获的异常 'Exception' with message 'String could not be parsed as 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();
?> 

【问题讨论】:

  • 不要忘记始终用您使用的语言标记您的问题。

标签: php xml string


【解决方案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>
";

您所做的是获取文字字符串 "&lt;&lt;&lt;" 并将其添加到您的 XML 中,从而为您提供如下字符串:

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

或者在你的例子中,字符串"&lt;&lt;&lt;XML&lt;data&gt;XML"

就 XML 解析器而言,您只是在字符串的开头和结尾放置了一堆垃圾,因此它正确地抱怨它不是一个有效的 XML 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2016-03-27
    • 2012-12-01
    相关资源
    最近更新 更多