繁体   English   中英

PHP上的simpleXmlElement丢失属性

[英]simpleXmlElement losses attributes on PHP

我正在尝试使用以下代码将一些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)操作期间丢失了“名称”属性。 有办法防止这种情况吗? 或者我该如何绕过这个问题?

您将必须遍历每个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM