simplexml_load_file($filePath,'SimpleXMLElement', LIBXML_NOCDATA);
を使用してXMLファイルをロードし、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要素には正しく追加されません。私はそれらの名前を変更しようとしましたが、それは違いを生むようには見えませんでした。
EDIT: FIELDタグでFIELDタグを囲んでみましたが、これも役に立たないと付け加えます。
EDIT:
私は非常XMLを単純化してきたが、それはまだアニー属性を返しません:
<UI_DEFINITION>
<FIELD lookup="test1" title="Title">Title</FIELD>
</UI_DEFINITION>
は生成します。
SimpleXMLElement Object ([UI_DEFINITION] => SimpleXMLElement Object ([FIELD] => Title))
私は答えを見つけましたが、7時間は自己回答できません。問題は、SimpleXMLでは同じ要素に属性とテキストを使用できないということです。私は可能な限り完全な回答を投稿します。 – alitheg