加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 使用SimpleXML加载XML不会返回某些元素的属性

发布时间:2020-05-25 08:53:34 所属栏目:PHP 来源:互联网
导读:我已经加载了一个 XML文件 simplexml_load_file($filePath,SimpleXMLElement, LIBXML_NOCDATA); 对于大多数提供的XML,它可以正常工作.但是,对于XML中的某些元素,属性不会转换为“@attributes”数组,而是从输出中丢失.这是一个示例: UI_DEFINITIONEDIT_PERMIS

我已经加载了一个 XML文件

simplexml_load_file($filePath,'SimpleXMLElement',LIBXML_NOCDATA);

对于大多数提供的XML,它可以正常工作.但是,对于XML中的某些元素,属性不会转换为“@attributes”数组,而是从输出中丢失.这是一个示例:

<UI_DEFINITION>
<EDIT_PERMISSION>testPermission</EDIT_PERMISSION>
<DEFAULT_VALUES>
    <display>hidden</display>
    <css_class>generic_css_class</css_class>
    <title>{tag}</title>
    <type>string</type>
    <wrapper_format>{value}</wrapper_format>
    <full_path>false</full_path>
    <mandatory>false</mandatory>
    <edit_permission>testPermission</edit_permission>
    <max_length>0</max_length>
</DEFAULT_VALUES>
<LOOKUPS>
    <DB_LOOKUP name="test3">
        <VIEW>???</VIEW>
        <ID_FIELD>???</ID_FIELD>
        <DESCR_FIELD>???</DESCR_FIELD>
        <ORDER>??? asc</ORDER>
    </DB_LOOKUP>
    <DB_LOOKUP name="test1">
        <VIEW>???</VIEW>
        <ID_FIELD>???</ID_FIELD>
        <DESCR_FIELD>???</DESCR_FIELD>
        <ORDER>??? asc</ORDER>
    </DB_LOOKUP>
</LOOKUPS>
<AREA internal_name="main_details" title="" display="show">
    <FIELD lookup="test1" title="Title">Title</FIELD>
    <FIELD title="Name">Given_Name</FIELD>
    <FIELD title="Mid. Name(s)">Middle_Names</FIELD>
    <FIELD title="Family Name">Family_Name</FIELD>
    <FIELD title="Gender">Gender</FIELD>
    <FIELD title="Born" type="date">Date_of_Birth</FIELD>
    <FIELD max_length="20" title="ID">Unique_Identifier</FIELD>
</AREA>

这给出了print_r的以下输出(我在该位添加了一个换行符):

SimpleXMLElement Object ( [UI_DEFINITION] => SimpleXMLElement Object ( [EDIT_PERMISSION] => testPermission [DEFAULT_VALUES] => SimpleXMLElement Object ( [display] => hidden [css_class] => generic_css_class [title] => {tag} [type] => string [wrapper_format] => {value} [full_path] => false [mandatory] => false [edit_permission] => testPermission [max_length] => 0 ) [LOOKUPS] => SimpleXMLElement Object ( [DB_LOOKUP] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [name] => test3 ) [VIEW] => ??? [ID_FIELD] => ??? [DESCR_FIELD] => ??? [ORDER] => ??? asc ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [name] => test1 ) [VIEW] => ??? [ID_FIELD] => ??? [DESCR_FIELD] => ??? [ORDER] => ??? asc ) ) ) 
[AREA] => SimpleXMLElement Object ( [@attributes] => Array ( [internal_name] => main_details [title] => [display] => show ) [FIELD] => Array ( [0] => Title [1] => Given_Name [2] => Middle_Names [3] => Family_Name [4] => Gender [5] => Date_of_Birth [6] => Unique_Identifier ) ) ) )

如您所见,属性数组已正确添加到大多数元素,但不会添加到FIELD元素.我已经尝试过重命名它们似乎并没有什么区别.

编辑:
我还应该补充一点,我已经尝试用FIELDS标签包围FIELD标签,但也无济于事.

编辑:

我已经非常简化了XML,它仍然没有返回anny属性:

<UI_DEFINITION>
                            <FIELD lookup="test1" title="Title">Title</FIELD>
                    </UI_DEFINITION>

生产:

SimpleXMLElement Object ( [UI_DEFINITION] => SimpleXMLElement Object ( [FIELD] => Title ) )
可以访问属性,例如:
$obj = simplexml_load_string($xml);

foreach($obj->AREA->FIELD as $field)
{
   echo $field->attributes()->title . '<br />';
}

print_r()并不总是使用SimpleXML显示完整的结构,但属性可供使用.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读