1
if($xml = simplexml_load_file($validationURL . "&output=soap12"))
{
   echo "Success";  
}
else
{
    echo "Failed";
}

所以这总是失败。$validationURL 是“http://validator.w3.org/check?uri=http://uvm.edu/~mfurland/cs148/assign1/projects.php”

http://validator.w3.org/check?uri=http://uvm.edu/~mfurland/cs148/assign1/nav.php&output=soap12在浏览器中工作,但在我的代码中不起作用。如果我使用 file(),我会得到一个数组,但它都是带有一堆我看不到的字符的字符串。就像它有一个看起来像“0”的二十或十个字符串。我在这里做错了什么?其他人似乎没有这个问题。

在浏览器中查看时文件的内容:

    <m:uri>http://www.uvm.edu/~mfurland/cs148/assign1/projects.php</m:uri>
    <m:checkedby>http://validator.w3.org/</m:checkedby>
    <m:doctype>HTML5</m:doctype>
    <m:charset>utf-8</m:charset>
    <m:validity>true</m:validity>
    <m:errors>
        <m:errorcount>0</m:errorcount>
        <m:errorlist></m:errorlist>
    </m:errors>
    <m:warnings>
        <m:warningcount>1</m:warningcount>
        <m:warninglist></m:warninglist>
    </m:warnings>
</m:markupvalidationresponse>
</env:Body>
</env:Envelope>
4

1 回答 1

0

我经常需要与使用命名空间的 Web 服务进行通信。您有两种选择;使用 SimpleXML 注册名称空间,或:从标签中删除字符。

删除:可能更容易,但可能不是最简洁的选择,具体取决于您要对数据执行的操作。

要删除冒号字符:

$xml_content = file_get_contents($validationURL . '&output=soap12');
$xml_content = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $xml_content);
$xml = simplexml_load_string($xml_content);

或者,要使用命名空间,请参阅这篇文章Parse XML with Namespace using SimpleXML

于 2012-09-10T21:50:17.453 回答