Как сказал Карусселл, лучший ответ - не использовать PHP для этого.Найдите библиотеку, которая может позаботиться об этом за вас.
Однако я признаю, что это не всегда вариант.Имея это в виду ...
Я думаю, что вы немного более многословны, чем нужно.Во-первых, вы должны использовать метод DOMDocument-> load ($ file) для загрузки файла.
Тогда, вероятно, я бы использовал XPath-запрос , чтобы выбрать искомые узлы вместо того, чтобы выполнять поиск самостоятельно.
Ваш код в конечном итоге будет искать что-токак это:
$searchTerm = "text";
$doc = new DOMDocument();
$doc->load( 'musicInformation.xml' );
$xpath = new DOMXPath( $doc );
$result = $xpath->query(
'//musicdetails[ .//text()[contains( ., "'. addslashes($searchTerm) .'" )] ]'
);
echo "Found: ". $result->length ."\n";
foreach ( $result AS $node ) {
echo $doc->saveXML($node) ."\n\n";
}