strip_tags remove ejemplo php xml parsing xml-parsing

php - remove - strip_tags wordpress



El mejor analizador XML para PHP (6)

Depende de lo que intentes hacer con los archivos XML. Si solo está tratando de leer el archivo XML (como un archivo de configuración), The Wicked Flea tiene razón al sugerir SimpleXML, ya que crea lo que equivale a ArrayObjects anidados. por ejemplo, el valor será accesible por $ xml-> root-> child.

Si está buscando manipular los archivos XML, probablemente sea mejor que use DOM XML

Esta pregunta ya tiene una respuesta aquí:

He utilizado XML Analizador antes, y aunque funcionó bien, no estaba contento con él en general, me pareció que estaba utilizando soluciones para cosas que deberían ser una funcionalidad básica.

Recientemente vi SimpleXML pero aún no lo he probado. ¿Es más simple? ¿Qué ventajas y desventajas tienen ambas? ¿Algún otro analizador que hayas usado?


Eche un vistazo a las extensiones XML disponibles de PHP y vea http://devzone.zend.com/243/ y http://devzone.zend.com/1035/ para una discusión sobre ellas.

La principal diferencia entre XML Parser y SimpleXML es que este último no es un analizador de extracción. SimpleXML está construido sobre las extensiones DOM y cargará todo el archivo XML en la memoria. XML Parser como XMLReader solo cargará el nodo actual en la memoria. Define controladores para nodos específicos que se activarán cuando el analizador lo encuentre. Eso es más rápido y ahorra en memoria. Usted paga por eso al no poder usar XPath.

Personalmente, considero que SimpleXml es bastante limitante (y por lo tanto simple) en lo que ofrece sobre DOM. Sin embargo, puede cambiar fácilmente entre DOM y SimpleXml, pero generalmente no me molesto y tomo la ruta DOM directamente. DOM es una implementación de la API DOM del W3C, por lo que es posible que esté familiarizado con ella desde otros lenguajes, por ejemplo, JavaScript.


Esta es una función útil para el análisis rápido y fácil de xml cuando una extensión no está disponible:

<?php /** * Convert XML to an Array * * @param string $XML * @return array */ function XMLtoArray($XML) { $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $XML, $vals); xml_parser_free($xml_parser); // wyznaczamy tablice z powtarzajacymi sie tagami na tym samym poziomie $_tmp=''''; foreach ($vals as $xml_elem) { $x_tag=$xml_elem[''tag'']; $x_level=$xml_elem[''level'']; $x_type=$xml_elem[''type'']; if ($x_level!=1 && $x_type == ''close'') { if (isset($multi_key[$x_tag][$x_level])) $multi_key[$x_tag][$x_level]=1; else $multi_key[$x_tag][$x_level]=0; } if ($x_level!=1 && $x_type == ''complete'') { if ($_tmp==$x_tag) $multi_key[$x_tag][$x_level]=1; $_tmp=$x_tag; } } // jedziemy po tablicy foreach ($vals as $xml_elem) { $x_tag=$xml_elem[''tag'']; $x_level=$xml_elem[''level'']; $x_type=$xml_elem[''type'']; if ($x_type == ''open'') $level[$x_level] = $x_tag; $start_level = 1; $php_stmt = ''$xml_array''; if ($x_type==''close'' && $x_level!=1) $multi_key[$x_tag][$x_level]++; while ($start_level < $x_level) { $php_stmt .= ''[$level[''.$start_level.'']]''; if (isset($multi_key[$level[$start_level]][$start_level]) && $multi_key[$level[$start_level]][$start_level]) $php_stmt .= ''[''.($multi_key[$level[$start_level]][$start_level]-1).'']''; $start_level++; } $add=''''; if (isset($multi_key[$x_tag][$x_level]) && $multi_key[$x_tag][$x_level] && ($x_type==''open'' || $x_type==''complete'')) { if (!isset($multi_key2[$x_tag][$x_level])) $multi_key2[$x_tag][$x_level]=0; else $multi_key2[$x_tag][$x_level]++; $add=''[''.$multi_key2[$x_tag][$x_level].'']''; } if (isset($xml_elem[''value'']) && trim($xml_elem[''value''])!='''' && !array_key_exists(''attributes'', $xml_elem)) { if ($x_type == ''open'') $php_stmt_main=$php_stmt.''[$x_type]''.$add.''[/'content/'] = $xml_elem[/'value/'];''; else $php_stmt_main=$php_stmt.''[$x_tag]''.$add.'' = $xml_elem[/'value/'];''; eval($php_stmt_main); } if (array_key_exists(''attributes'', $xml_elem)) { if (isset($xml_elem[''value''])) { $php_stmt_main=$php_stmt.''[$x_tag]''.$add.''[/'content/'] = $xml_elem[/'value/'];''; eval($php_stmt_main); } foreach ($xml_elem[''attributes''] as $key=>$value) { $php_stmt_att=$php_stmt.''[$x_tag]''.$add.''[$key] = $value;''; eval($php_stmt_att); } } } return $xml_array; } ?>


Hola, creo que SimpleXml es muy útil. Y con eso estoy usando xpath ;

$xml = simplexml_load_file("som_xml.xml"); $blocks = $xml->xpath(''//block''); //gets all <block/> tags $blocks2 = $xml->xpath(''//layout/block''); //gets all <block/> which parent are <layout/> tags

Utilizo muchas configuraciones xml y esto me ayuda a analizarlas realmente rápido. SimpleXml está escrito en C por lo que es muy rápido.


el analizador crxml es realmente fácil de analizar.

Esta clase tiene una función de búsqueda, que toma un nombre de nodo con cualquier espacio de nombres como argumento. Busca en el xml el nodo e imprime la declaración de acceso para acceder a ese nodo usando esta clase. Esta clase también hace que la generación de xml sea muy fácil.

puedes descargar esta clase en

http://freshmeat.net/projects/crxml

o desde phpclasses.org

http://www.phpclasses.org/package/6769-PHP-Manipulate-XML-documents-as-array.html


Tendría que decir que SimpleXML lleva la palma porque es, en primer lugar, una extensión, escrita en C, y es muy rápida. Pero segundo, el documento analizado toma la forma de un objeto PHP. Entonces puedes "consultar" como $root->myElement .