Пробразование символов при обработке XML с помощью SimpleXML

Hunterok

Новичок
Пробразование символов при обработке XML с помощью SimpleXML

Имеется XML вида
PHP:
<section name="UNMOTIVATED" type="text" description="2"> 
		<h1>RUNMOTIVATED</h1>
		<h2>PROGRAM DESCRIPTION</h2>
		<page id="0" type="text">
			<text>Coaches Corner

Information still needed</text>
		</page>
	</section>
Когда пытаюсь обрабатывать документ, а потом записывать в файл с помощью функции asXML(), то некоторые символы в XML документе заменяются:
PHP:
<section name="UNMOTIVATED" type="text" description="2"> 
		<h1>RUNMOTIVATED</h1>
		<h2>PROGRAM DESCRIPTION</h2>
		<page id="0" type="text">
			<text>Coaches Corner&#xD;
&#xD;
Information still needed</text>
		</page>
	</section>
Нашел в инете, что почти все XML парсеры просто приводят документ в "Canonical" вид (не знаю как это правильно называется), который используется в UNIX.
Вот цитата:
The main problem is this: since XML parsers must convert \r (Mac) and \r\n (Windows) linefeeds into canonical \n (Unix) when parsing, as per specification,
Здесь говорится о переводе на новую строку, но можно провести аналогию и к другим символам. Например, я использую в некоторых текстах символ квадратика, который в итоге преобразуется в
PHP:
&#xF063;
Подскажите, как правильно парсить, что бы все спецсимволы оставались в первоначальном виде. И как можно добиться, что бы при использовании addChild парсер добавлял отступы.

Заранее огромное спасибо!
 

FB3

Новичок
Отступы SimpleXML вроде бы не умеет делать. Только с помощью DOM.
 

Hunterok

Новичок
С отступами разобрался:
PHP:
   function trimXml($xmlfile)
   {
       $dom = new DOMDocument();
  	  
   	   $dom->preserveWhiteSpace = false;
      
  	   if (!$dom->load($xmlfile)) return false;
      
  	   $dom->formatOutput = true;
      
  	   if (!$dom->save($xmlfile)) return false;
  	  
  	   return true;
   }
Остались символы, пока рою инфу, но ничего не нашел(
 
Сверху