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 」のような文字列が 20 個または 30 個あるようなものです。ここで何が間違っていますか?他の誰もこの問題を抱えていないようです。

ブラウザで見たときのファイルの内容:

    <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 サービスと頻繁に通信する必要があります。利用できるオプションは 2 つあります。:名前空間を 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);

または、名前空間を操作するには、この記事を参照してください。SimpleXML を使用して名前空間で XML を解析する

于 2012-09-10T21:50:17.453 に答える