2

このcURLから整形式のXMLドキュメントを取得しているようですが、SimpleXMLElementクラスを使用してこの戻り値を解析できないようです。これは、私が現在使用しているコードの反復です。

$url = "http://rosemary.umw.edu/~stephen/cpsc448/numCredits.php?prefix=". $prefix ."&number=" . $number; // prefix=cpsc&number=220
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 15);

$resp = curl_exec($ch);

echo $resp;

これは次を返します:

<?xml version="1.0"?><NumCredits>4</NumCredits>

これは私が現在リターンを解析しようとしている方法です:

$xml = new SimpleXMLElement($resp);
echo $xml->NumCredits[0];

これを使用すると、応答がありません。私もこの方法を試しましたが成功しませんでした:

$dom = new DOMDocument;
$dom->loadXML($resp);
if (!$dom) {
    echo 'Error parsing document';
    exit;   
}

$simpleXML = simplexml_import_dom($dom);
echo $simpleXML;
return $simpleXML->NumCredits[0];

私はここで何か間違ったことをしなければなりませんが、なぜこのリターンを解析するのがそれほど難しいのか理解できません。

4

1 に答える 1

3

XMLには要素が1つしかないため、ドキュメントルートと見なされます。

$xml_string = '<?xml version="1.0"?><NumCredits>4</NumCredits>';
$xml = new SimpleXmlElement($xml_string);
print_r($xml);

出力します:

SimpleXMLElement Object
(
    [0] => 4
)

したがって、次のようにアクセスできます。$xml[0];

要素名でアクセスできるようにする場合は、XMLにルート要素を追加する必要があります。次に例を示します。

<?xml version="1.0"?>
<root>
    <NumCredits>4</NumCredits>
</root>

このドキュメントが解析されると、次を使用して値にアクセスできます。$xml->NumCredits;

于 2012-10-27T01:16:30.787 に答える