次のような XML ファイル record.xml があります。
<record>
<name>john</name>
<gender>male</gender>
<subject>mathematics, english, science</subject>
</record>
<record>
<name>jamie</name>
<gender>female</gender>
<subject>mathematics, science</subject>
</record>
<record>
<name>jack</name>
<gender>male</gender>
<subject>social-science, english</subject>
</record>
<record>
これらすべての子ノードのすべての子 nodeName と値を連想配列で返す xpath クエリを作成したいと考えています。
例:
上記の XML ファイルの場合、出力配列は次のようになります。
array{ [0] => array{ [name] = 'john', [gender] = 'male', [subject] = 'mathematics, english, science' } [1] => array{ [name] = 'jamie', [gender] = 'female', [subject] = 'mathematics, science' } [2] => array{ [name] = 'jack', [gender] = 'male', [subject] = 'social-science, english' } }
以下は、私が書いたコードの一部です。これは、すべての<record>
子ノードの値を返しますが、ノード名は返しません。
.......
.......
$xmldoc = new DOMDocument();
$xmldoc->load('record.xml');
$xpathvar = new Domxpath($xmldoc);
$res = $xpathvar->query('//record');
foreach($res as $data){
//$data do not contain node values
$arr[] = $data->textContent;
}
//process $arr to get required format
.....
.....
子ノード名とその値を返す Xpath クエリが必要です。