ここで解決策を探すために過去 2 晩を費やしましたが、これを理解することができませんでした。複数の XML ファイルがあり、それらすべてをループして、同じ属性を含むノードを探し、それらのすべてのノードを出力ファイルにマージしたいと考えています。次に例を示します。
File1.xml
<game rotnum="241">
<gamedate> 123 </gamedate>
<team1> Giants </team1>
<team2> Eagles </team2>
</game>
File2.xml
<game rotnum="241">
<line> 4 </line>
<points> 200 </points>
</game>
Merged.xml
<game rotnum="241">
<gamedate> 123 </gamedate>
<team1> Giants </team1>
<team2> Eagles </team2>
<line> 4 </line>
<points> 200 </points>
</game>
多かれ少なかれ。PHP でこれを行う必要があり、DOM を使用する方が XSLT よりも簡単だと考えています (これについてはよくわかりません)。
複数のファイル全体に多数のノードがあり、同様の rotnum 属性に基づいてデータを照合する必要があります。
必ずしもこれを行う必要があるかどうかはわかりませんが、すべてのデータを 1 つの simpleXML オブジェクトにまとめ、ゲームごとに個別のテーブルを作成して生成できるようにする最も簡単な方法です。
これらの XML ファイルは、SimpleXML を使用して作成し、ローカルにキャッシュした複数の API フィードからのものです。
function stripAndSaveFile($xml) {
$game = $xml->game;
$output = new SimpleXMLElement("<justbetlinesfeed></justbetlinesfeed>");
for ($i = 0; $i < 16; $i++) {
//Get the date of each game.
$spreadpoints = $game[$i]->line->spread->attributes()->points;
$spreadteam1 = $game[$i]->line->spread->attributes()->team1adj;
$spreadteam2 = $game[$i]->line->spread->attributes()->team2adj;
$rotnum = $game[$i]->attributes()->team1rotnum;
$insert = $output->addChild("game");
$insert->addAttribute("rotnum", "$rotnum");
$insert->addChild("spreadpoints", "$spreadpoints");
$insert->addChild("spreadteam1", "$spreadteam1");
$insert->addChild("spreadteam2", "$spreadteam2");
}
file_put_contents($this->filePath, $output->asXML());
}
}