我正在尝试使用如下代码将一些xml数据转换为json:
$xml = file_get_contents($query);
$GSP = new SimpleXMLElement($xml);
echo json_encode($GSP);
问题是,在SimpleXMLElement期间,我丢失了xml文件中的属性。
以下是XML的一个示例;
<ENTOBRESULTS>
<OBRES module_name="ModName">
<provider>ModName</provider>
<title>...</title>
<MODULE_RESULT>
<U> http://someURL.aspx </U>
<Title> AnotherTitle </Title>
<Field name="Main">ASD</Field>
<Field name="ProductType">type</Field>
<Field name="buttonText">Press it</Field>
<Field name="buttonUrl">https://anotherURL.aspx</Field>
</MODULE_RESULT>
</OBRES>
</ENTOBRESULTS>
但是当我将$ GSP登录到chrome控制台时,它会显示如下内容:
ENTOBRESULTS: Object
OBRES: Array[3]
0: Object
@attributes: Object
MODULE_RESULT: Array[3]
0: Object
Field: Array[22]
0: "ASD"
1: "type"
2: "Press it"
3: "https://anotherURL.aspx"
正如您所看到的,我在 $ GSP = new SimpleXMLElement($ xml)操作期间失去了'name'属性。有办法防止这种情况吗?或者我该如何绕过这个问题?
答案 0 :(得分:0)
您必须迭代每个xml节点,访问属性,并构建最终将最终编码为json的对象。
例如
$xml = file_get_contents('xml.xml');
$GSP = new SimpleXMLElement($xml);
foreach ($GSP->OBRES->MODULE_RESULT->Field as $f){
//var_dump($f);
print $f->attributes() . ":" . $f . PHP_EOL;
}
Main:ASD
ProductType:type
buttonText:Press it
buttonUrl:https://anotherURL.aspx