Busqueda de nodos en estructuras XML con PHP
XML es uno de los lenguajes de marcas más populares dentro del desarrollo de aplicaciones web , ya que su fácil manejo y estructuración de contenido permite generar una mejor presentación de la información de una manera muy simple. Existen una gran cantidad de lenguajes de programación que manejan el uso de librerías para funciones XML , como PHP , Java , Python , etc ...
Para este ejemplo tenemos con entrada , la siguiente estructura XML , la cual hace referencia a un cuestionario.
-
<?xml version="1.0"?>
-
<Cuestionario>
-
-
<Pregunta id="0" desc="Que lenguaje de programacion trabaja con JSP ?" tipo="2">
-
<Respuesta valor="1" id="a">Java</Respuesta>
-
<Respuesta valor="0" id="b">C++</Respuesta>
-
<Respuesta valor="0" id="c">PHP</Respuesta>
-
<Respuesta valor="0" id="d">HTML</Respuesta>
-
<Respuesta valor="0" id="e">Python</Respuesta>
-
</Pregunta>
-
<Pregunta id="1" desc="Son Navegadores WEB muy populares" tipo="1">
-
-
<Respuesta valor="1" id="a">Google Chrome</Respuesta>
-
<Respuesta valor="1" id="b">Firefox</Respuesta>
-
<Respuesta valor="0" id="c">Fedora</Respuesta>
-
<Respuesta valor="0" id="d">Netbeans</Respuesta>
-
<Respuesta valor="0" id="e">Eclipse</Respuesta>
-
</Pregunta>
-
<Pregunta id="2" desc="Son sistemas operativos " tipo="1">
-
<Respuesta valor="1" id="a">linux</Respuesta>
-
<Respuesta valor="0" id="b">Eclipse</Respuesta>
-
<Respuesta valor="1" id="c">Windows</Respuesta>
-
<Respuesta valor="0" id="d">Java</Respuesta>
-
<Respuesta valor="1" id="e">Mac OS</Respuesta>
-
</Pregunta>
-
</Cuestionario>
Dicho cuestionario esta ordenado en base a nodos , donde el nodo padre es “Cuestionario” , seguido del hijo que es “Pregunta” hasta llegar a los últimos nodos que es “Respuesta” , algunos nodos como Pregunta y Respuesta contiene atributos como id , desc y valor . estos contiene información que los diferencia de los otros nodos.
La búsqueda de un nodo XML en PHP , puede ser muy sencillo si utilizamos elementos DOM que nos permitan realizar búsquedas similares a las sentencias SQL en las bases de datos. XPath es un tipo de datos que nos permite dicho manejo , pero utilizando expresiones regulares como :
-
<?php
-
// Script para buscar un elemento dentro de un XML , utilizando XQuery
-
-
//(1) Cargar Archivo XML
-
-
$dom = DOMDocument::load('cuestionarios/cues_mod1.xml', LIBXML_NOBLANKS);
-
-
// (2) Crear DOMXPath
-
$xpath = new DOMXPath($dom);
-
-
// Consulta Simple
-
-
$verNode = $xpath->query("*[@id='1']//*[@valor='1']");
-
-
// Obtener Preguntas
-
-
if ($verNode && $verNode->length> 0) {
-
-
-
foreach ($verNode as $Nodo ) {
-
-
echo "<p>$Nodo->nodeValue </p>";
-
-
-
} // fin del foreach
-
-
-
-
} else {
-
-
-
echo "<p>Objeto no encntrado</p>";
-
-
} // fin del if
-
-
-
?>
otro ejemplo de "econtrar y eliminar nodo "
-
<?php
-
$dom = new DOMDocument();
-
$dir_xml = "../Galeria/gal_neg_65.xml";
-
$dom->load($dir_xml);
-
-
$searchNode = $dom->getElementsByTagName("Elemento");
-
-
foreach( $searchNode as $node ) {
-
-
if ($node->getAttribute('id') == 3) {
-
-
$dom->documentElement->removeChild($node);
-
-
}
-
-
}
-
-
$dom->save($dir_xml);
-
-
?>
Blog
Foro
Codes
Feed rss