我有一個問題...我想重命名一些XML文件中的標籤。在它的工作原理與此代碼:(XML)PHP是不是重命名所有標籤?
$xml = file_get_contents('data/onlinekeystore.xml');
renameTags($xml, 'priceEUR', 'price', 'data/onlinekeystore.xml');
但如果我要重新命名另一個XML文件,它好好嘗試工作,用同樣的方法... 請參見下面的例子。我不知道爲什麼... 有人有一個想法,可以幫助我嗎?
$xml = file_get_contents('data/g2a.xml');
renameTags($xml, 'name', 'title', 'data/g2a.xml');
功能代碼:
function renameTags($xml, $old, $new, $path){
$dom = new DOMDocument();
$dom->loadXML($xml);
$nodes = $dom->getElementsByTagName($old);
$toRemove = array();
foreach ($nodes as $node) {
$newNode = $dom->createElement($new);
foreach ($node->attributes as $attribute) {
$newNode->setAttribute($attribute->name, $attribute->value);
}
foreach ($node->childNodes as $child) {
$newNode->appendChild($node->removeChild($child));
}
$node->parentNode->appendChild($newNode);
$toRemove[] = $node;
}
foreach ($toRemove as $node) {
$node->parentNode->removeChild($node);
}
$dom->saveXML();
$dom->save($path);
}
onlinekeystore.xml輸入:
<product>
<priceEUR>5.95</priceEUR>
</product>
onlinekeystore.xml輸出繼電器:
<product>
<price>5.95</price>
</product>
g2a.xml輸入:
<products>
<name><![CDATA[1 Random STEAM PREMIUM CD-KEY]]></name>
</products>
g2a.xml輸出繼電器:
<products>
<name><![CDATA[1 Random STEAM PREMIUM CD-KEY]]></name>
</products>
問候
我測試過這個,它對我來說工作正常。你有什麼錯誤嗎?你得到了什麼結果?你運行的是哪個版本的php? – CUGreen
我正在使用PHPStorm和PHP 7.1。我沒有得到任何錯誤...這就是奇怪 – Jan