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 回答