请帮助我理解替换子节点的问题
$dom = new DOMDocument();
$dom->load('cheat.xml');
$team1sabbr = $dom->getElementsByTagName('team1sabbr');
$textNode = $dom->createTextNode('value-1');
$textNode = $dom->importNode($textNode, true);
$team1sabbr->replaceChild($textNode, $oldNode);
$dom->save('cheat.xml');
它抛出了像
这样的错误Fatal error: Call to undefined method DOMNodeList::replaceChild()
cheat.xml
看起来像
<?xml version="1.0"?>
<matches>
<match id="2204">
<Game></Game>
<team1sabbr></team1sabbr>
<team2sabbr></team2sabbr>
答案 0 :(得分:5)
您需要将代码修改为如下所示:
$team1sabbr = $dom->getElementsByTagName('team1sabbr');
$textNode = $dom->createTextNode('value-1');
foreach ($team1sabbr as $team) {
$team->parentNode->replaceChild($textNode, $team);
}
replaceChild
。 修改:: 强>
通过评论似乎问题不明确。
以下是所需要的。
$team1sabbr = $dom->getElementsByTagName('team1sabbr');
foreach ($team1sabbr as $team) {
$team->nodeValue = 'value-1';
}
答案 1 :(得分:2)
$team1sabbr
是DOMNodeList
,即Node
的列表,而非Node
。你需要选择其中一个。