Обработка XML с помощью PHP

Например, нужно обработать такое XML содержимое, которое храниться в файле на сервере

<ValCurs Date="23/12/2011" SetDate="23/12/2011" Name="Currency Service">
 <Valute id="1">
  <NumCode>036</NumCode>
  <CharCode>AUD</CharCode>
  <Nominal>100</Nominal>
  <Name>австралійських доларів</Name>
  <Value>809.4145</Value>
 </Valute>
 <Valute id="2"><NumCode>031</NumCode><CharCode>AZM</CharCode><Nominal>100</Nominal><Name>азербайджанських манатів</Name><Value>1016.0626</Value></Valute>
 <Valute id="3"><NumCode>826</NumCode><CharCode>GBP</CharCode><Nominal>100</Nominal><Name>англійських фунтів стерлінгів</Name><Value>1252.0889</Value></Valute>
 ...
 <Valute id="29"><NumCode>392</NumCode><CharCode>JPY</CharCode><Nominal>1000</Nominal><Name>японських єн</Name><Value>102.2627</Value></Valute>
</ValCurs>

Начнём:

$XML = file_get_contents(\'http://адрес...\'); // отсюда получяем данные
$File = "/home/.../file.txt"; // сюда сохраняем полученные данные

if ($XML){ // проверяем, удалось ли загрузить XML
	if (mb_check_encoding($XML, \'UTF-8\')) {$XML = mb_convert_encoding($XML, \'Windows-1251\', \'UTF-8\');} // перекодируем в Windows-1251
	// достаём нужные данные в массив
	preg_match_all("/Date=\\\\\\\\"(\\\\\\\\d\\\\\\\\d\\\\\\\\/\\\\\\\\d\\\\\\\\d\\\\\\\\/\\\\\\\\d\\\\\\\\d\\\\\\\\d\\\\\\\\d)\\\\\\\\"/U", $XML, $date);
	preg_match_all("/<CharCode>(.*)<\\\\\\\\/CharCode>/U", $XML, $char);
	preg_match_all("/<Nominal>(.*)<\\\\\\\\/Nominal>/U", $XML, $nomi);
	preg_match_all("/<Name>(.*)<\\\\\\\\/Name>/U", $XML, $name);
	preg_match_all("/<Value>(.*)<\\\\\\\\/Value>/U", $XML, $valu);

	echo \'Курсы НБУ на \'.$date[1][0];
	$text = "";
	for ($i=0; $i<count($char[1]); $i  ) {
		$text = \'<br />\'.$char[1][$i].\' \'.$nomi[1][$i].\' \'.$name[1][$i].\' \'.$valu[1][$i];
	}
	echo $text;
}
else echo "ошибка, не удалось загрузить XML данные";

file_put_contents($File, $text); // запись строки в файл