私は現在、$tables
という配列を作るのにこれをやっていますが、もっと簡単な方法があるのでしょうか?複数の要素を一度に選択するXPath?
$tables = array();
$abbr = $states_xml->xpath('//StateAbbr');
$names = $states_xml->xpath('//StateName');
// State Abbreviations...
while(list($key,$table) = each($abbr)) {
$tables[$key]['Abbr'] = (string) trim($table);
}
// State Names...
while(list($key,$name) = each($names)) {
$tables[$key]['Name'] = (string) trim($name);
}
それは1、外出先でのStateAbbr
とStateName
要素を呼び出し、$tables
があるとして、それらが同じ形式の配列で出力することは可能ですか?私は$states_xml
にXMLをロードする$states_xml = simplexml_load_string(THE STRING ABOVE);
を使用しています
<diffgr:diffgram
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet
xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<StateAbbr>AL </StateAbbr>
<StateName>Alabama</StateName>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<StateAbbr>AK </StateAbbr>
<StateName>Alaska</StateName>
</Table>
<Table diffgr:id="Table3" msdata:rowOrder="2">
<StateAbbr>AS </StateAbbr>
<StateName>American Samoa</StateName>
</Table>
<Table diffgr:id="Table4" msdata:rowOrder="3">
<StateAbbr>AP </StateAbbr>
<StateName>AP</StateName>
</Table>
...
</NewDataSet>
</diffgr:diffgram>
:
array(57) {
[0]=>
array(2) {
["Abbr"]=>
string(2) "AL"
["Name"]=>
string(7) "Alabama"
}
[1]=>
array(2) {
["Abbr"]=>
string(2) "AK"
["Name"]=>
string(6) "Alaska"
}
[2]=>
array(2) {
["Abbr"]=>
string(2) "AS"
["Name"]=>
string(14) "American Samoa"
}
... and so on...
基本的には、$states_xml
は次のようになります。
ので、テーブルの列は次のようになります。
とにかく、StateAbbr
とStateName
のすべてをTable
の要素からまとめて出力することはできますか?私には可能ですが、私が現在やっているやり方以外にこれにアプローチする方法がわかりません。
いいえ、それは残念なことには機能しません。私はXML文字列の出力で質問を更新しました。 –
まあ、それは何をするように設計されています:すべての 'StateAbbr'と' StateName'要素を単一のXPathで選択します。あなたが実際に 'StateAbbr'と' StateName'要素の間の関連付けを保持したいのであれば、なぜすべてのテーブルを選択しないのですか?例: '// Table' – kjhughes
'// Table'は情報をあまりにも多く返し、簡単に解析できないためです。いずれにせよ、 '$ states = json_decode(json_encode($ states_xml)、true);'を実行するだけで済むようになりました。 NewDataSet '] [' Table '] 'それは私に必要なものを与えます。あなたの助けてくれてありがとう。 :) –