我花了最后两个晚上在这里寻找解决方案,但我无法弄清楚这一点。我有多个 XML 文件,我想遍历所有这些文件以查找包含相同属性的节点,并将它们的所有节点合并到一个输出文件中。这是一个例子:
文件1.xml
<game rotnum="241">
<gamedate> 123 </gamedate>
<team1> Giants </team1>
<team2> Eagles </team2>
</game>
文件2.xml
<game rotnum="241">
<line> 4 </line>
<points> 200 </points>
</game>
合并的.xml
<game rotnum="241">
<gamedate> 123 </gamedate>
<team1> Giants </team1>
<team2> Eagles </team2>
<line> 4 </line>
<points> 200 </points>
</game>
或多或少。我需要在 PHP 中执行此操作,并且我认为使用 DOM 会比 XSLT 更容易(我对此了解不多)。
多个文件中有很多节点,我需要根据类似的 rotnum 属性匹配数据。
我不知道我是否一定需要这样做,但这是我能想到的最简单的方法,将我的所有数据放入一个 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());
}
}