Análisis de XML por id help

Novato de XML, no tengo idea de lo que estoy haciendo. Necesito una forma simple y bien explicada para hacer esto, por favor.

De una página anterior utilizo strings de consulta para obtener un ejemplo id: test.php? Id = AT

Necesito mostrar todos los nombres de los empleados dentro del departamento que seleccionen. A continuación hay un fragmento de mi documento XML.

   bdbowen bdbowen John J. Doe images/faculty/bdbown.jpg Knoy 765.494.2884 [email protected]   bdbowen bdbowen Jill J. Doe images/faculty/bdbown.jpg Knoy 765.494.2884 [email protected]     bdbowen bdbowen John J. Doe images/faculty/bdbown.jpg Knoy 765.494.2884 [email protected]    

Por ejemplo, si seleccionan el enlace que usa un GET para obtener el ID de AT, quiero mostrar lo siguiente en la página:

John J. Doe
Jill J. Doe

De nuevo, no tengo idea de lo que estoy haciendo aquí, por lo que cualquier ayuda sería muy apreciada.


Probé con el siguiente código, pero solo muestra el nombre de cada departamento. ¿Alguna idea de cómo modificarla para mostrar todos los nombres dentro de un departamento?

  if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","faculty1.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; document.write(""); var x=xmlDoc.getElementsByTagName("DEPARTMENT"); for (i=0;i<x.length;i++) { document.write(""); } document.write("
"); document.write(x[i].getElementsByTagName("NAME")[0].childNodes[0].nodeValue); document.write("
");

Puedes usar una expresión xpath:

Ver: https://github.com/homer6/altumo/blob/master/source/php/Xml/XmlElement.md

 $xml = <<   bdbowen bdbowen John J. Doe images/faculty/bdbown.jpg Knoy 765.494.2884 [email protected]   bdbowen bdbowen Jill J. Doe images/faculty/bdbown.jpg Knoy 765.494.2884 [email protected]     bdbowen bdbowen John J. Doe images/faculty/bdbown.jpg Knoy 765.494.2884 [email protected]    XML; $xml_element = new \Altumo\Xml\XmlElement($xml); $results = $xml_element->queryWithXpath( 'DEPARTMENT[@id="AT"]/EMPLOYEE/NAME' ); var_dump( $results ); array(2) { [0]=> string(11) "John J. Doe" [1]=> string(11) "Jill J. Doe" } 

Editar: Después de algunos consejos de Gordon aquí está mi código editado:

 $xmlObject = smplexml_load_file("staff.xml"); $id = $_GET["id"]; $employees = null; foreach($xmlObject as $key => $value){ $attributes = $xmlObject[0]->DEPARTMENT->attributes(); if($attributes["id"] == $id){ $employees = $xmlObject[0]->DEPARTMENT->EMPLOYEE; break; } } foreach($employees as $key => $value){ print $value->NAME . "\n"; } 

Básicamente, obtendrás una lista de empleados en la variable $ employees, que puedes repetir y recuperar el nombre como dijiste que querías.