【发布时间】:2014-05-25 12:34:07
【问题描述】:
我有以下xml:
$resultXML=<<<XML
<Mapper ProviderCode="" ProviderName="" SessionID="" Supplier="" ProviderSupplier="">
<ProviderSupplierName/>
</Mapper>
XML;
当我发布时:
$sxml = simplexml_load_string($resultXML);
echo json_encode($sxml);
在PHP Version 5.3.3-7+squeeze15,我得到:
"Mapper": {
"@attributes": {
"ProviderCode": "",
"ProviderName": "",
"SessionID": "",
"Supplier": "",
"ProviderSupplier": ""
},
"ProviderSupplierName": {}
}
在PHP Version 5.4.4-14+deb7u8 中,我得到:
"Mapper": {
"0": {},
"@attributes": {
"ProviderCode": "",
"ProviderName": "",
"SessionID": "",
"Supplier": "",
"ProviderSupplier": ""
}
}
我想使用PHP Version 5.4.4-14+deb7u8 并获得与PHP Version 5.3.3-7+squeeze15 相同的结果。
实际上这个 xml 是一个很长的 xml 的一部分。当我在这种情况下提取它时,我在两个版本的 php 上都得到了相似的结果。
完整的xml可以在https://drive.google.com/file/d/0B9zOzk6voXHKQ3N1ZklfVFVITFU/edit?usp=sharing找到
我注意到的另一件事是,如果我使用链接中给出的 xml,我会像第二个示例一样获得 json,但是如果我使用 xml 格式化程序并格式化 xml,那么我会在第一个示例中获得 json .
有什么帮助吗?
【问题讨论】:
-
json_encode的行为没有改变。但也许simplexml_load_string做到了。 -
这对我来说似乎是一个经典的X/Y Problem:不管为什么它在不同的环境中表现不同,像这样盲目地将 XML 文档转换为 JSON 似乎是一个相当没有意义的练习。你实际上想要达到什么目的?
-
“实际上这个 xml 是一个很长的 xml 的一部分。当我像这种情况一样提取它时,我在两个版本的 php 上都得到了相似的结果。”
-
@IMSoP 我已经编辑了问题并包含了完整的 xml。