私は、次のXMLで「基準」ノードに「フィールド」要素にアクセスしようとしています:XMLノードに@attributesにアクセスすることができません
<?xml version="1.0" encoding="utf-8"?>
<result>
<product>
<data>
<field>spr_tech1</field>
<value>S7</value>
<criteria field="xfield_3">
<criteria_list>Green</criteria_list>
<criteria_list>Beige</criteria_list>
</criteria>
</data>
<data>
<field>spr_tech1</field>
<value>S1</value>
<criteria field="xfield_3">
<criteria_list>Red</criteria_list>
<criteria_list>Blue</criteria_list>
<criteria_list>Yellow</criteria_list>
</criteria>
</data>
<data>
<field>spr_tech1</field>
<value>S7</value>
<criteria field="xfield_3">
<criteria_list>Green</criteria_list>
</criteria>
<criteria field="tech_rt2">
<criteria_list>Transistor</criteria_list>
</criteria>
</data>
</product>
</result>
次のエラーで結果を以下のコード:致命的な エラーは:あなたがコード内で見ることができるように私はカップルの方法を試してみた非オブジェクト
function parseXmlFile($filename)
{
$xml = file_get_contents($filename);
$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$array = json_decode(json_encode($obj), true); // Convert to array}
return $array;
}
$xform = parseXmlFile('transformations.xml');
foreach ($xform['product']['data'] as $data)
{
echo (string)$data['field'] . '<br>';
echo (string)$data['value'] . '<br>';
foreach($data['criteria']->attributes() as $att => $val)
{ echo $att . ' = ' . $val . '<br>'; }
echo $data['criteria']->attributes()->{'field'} . '<br>';
foreach($data['criteria']['criteria_list'] as $att => $val)
{ echo $att . ' = ' . $val . '<br>'; }
echo "-----------------------------------<br>";
}
print "<pre>";
print_r($xform);
print "</pre>";
に()メンバ関数の属性への呼び出しが、どちらも私のために働いています。
ご協力いただきましてありがとうございます。
申し訳ありませんが、私は完全に私のXMLヘルパー関数について忘れてしまいました。私はコードに加えました。 – Dizzy49
私はあなたの上の2行のコードを使用し、[フィールド]から - >フィールドにすべてを変更する場合、それは動作します。したがって、問題は、json de/encodeを使用して配列に変換された後です。 – Dizzy49