0

以下に、私の xml ドキュメントがあります。

<?xml version="1.0" encoding="ISO-8859-1"?>
<app>
    <version>0925</version>
    <humanVersion>0.9.25</humanVersion>
</app>

これが私のphpです:

$completeurl = "ota/shingle/shingle.xml";
$xml = simplexml_load_file($completeurl);
$updateVer = $xml->version;
$updateVerHuman = $xml->humanVersion;

私はphp変数を取得してjson文字列に入れています。ここに出力があります:

{"updateVer":{"0":"0925"},"updateVerHuman":{"0":"0.9.25"}}

updateVer と updateVerHuman のデータが {} で囲まれ、"0" が含まれているのはなぜですか?? その値のデータのみが必要です。どうすればこれを達成できますか?

私はこれを試しましたが、同じ結果が得られます:

$updateVer = $xml->version[0];
$updateVerHuman = $xml->humanVersion[0];
4

1 に答える 1

4

SimpleXML を使用して任意の子要素 ​​(または属性) にアクセスすると、別の SimpleXML オブジェクトが返されます。これが、 のような記述ができる理由です$node->child->grand_child

XML の特定のビットの文字列コンテンツだけを取得するには、. を使用して、SimpleXML オブジェクトを文字列に「キャスト」する必要があります(string)$variable

場合によっては、これが発生することもあります。特に、文字列以外は何もエコーできないため、echo $variableは常に文字列にキャストされます。ただし、経験則として、後の混乱を避けるために、常に SimpleXML オブジェクトを文字列にキャストしてください。

あなたの例では、JSONに変換し$updateVer$updateVerHumanも両方ともまだオブジェクトです。$updateVer = (string)$xml->version; $updateVerHuman = (string)$xml->humanVersion;期待される結果が得られるはずです。

于 2012-09-18T20:28:15.660 に答える