Tengo que analizar XML provisto externamente que tiene atributos con saltos de línea en ellos. Con SimpleXML, los saltos de línea parecen estar perdidos. De acuerdo con another stackoverflow question, los saltos de línea deberían ser válidos (¡aunque mucho menos que ideales!) Para XML.PHP SimpleXML no conserva los saltos de línea en los atributos XML
¿Por qué se pierden? [edit] ¿Y cómo puedo preservarlos? [/ edit]
Aquí hay una secuencia de comandos del archivo de demostración (tenga en cuenta que cuando los saltos de línea no están en un atributo se conservan).
de archivos PHP con XML incrustado
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<Rows>
<data Title='Data Title' Remarks='First line of the row.
Followed by the second line.
Even a third!' />
<data Title='Full Title' Remarks='None really'>First line of the row.
Followed by the second line.
Even a third!</data>
</Rows>
XML;
$xml = new SimpleXMLElement($xml);
print '<pre>'; print_r($xml); print '</pre>';
salida de print_r
SimpleXMLElement Object
(
[data] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Title] => Data Title
[Remarks] => First line of the row. Followed by the second line. Even a third!
)
)
[1] => First line of the row.
Followed by the second line.
Even a third!
)
)
Debe formular esta pregunta en la página de inicio de PHP. Supongo que es porque es SIMPLE xml parser. – jbasko
¿Puedes explicar un poco más lo que quieres decir con la página de inicio de PHP? – Joshua
Inicialmente su pregunta era "¿Por qué SimpleXML hace lo que hace?" Eso es lo que puedes pedirle a los desarrolladores, no a los usuarios. – jbasko