2016-05-28 9 views
0

hallo Jeder ich habe eine seltsame Frage (für mich ist es seltsam). Ich habe eine XML-Datei wie unten:wählen Sie auch den gesamten Knoten mit seinem Attributwert mit xpath

<?xml version="1.0" encoding="ISO-8859-1"?> 
<StudentsList> 
<Student> 
<student_id email="[email protected]">18700</student_id> 
<firstName>Jhon</firstName> 
<lastName>Smith</lastName> 
<address>Dragon Vally china</address> 
</Student> 
<Student> 
<student_id email="[email protected]">18701</student_id> 
<firstName>Lee</firstName> 
<lastName>Sin</lastName> 
<address>League Of Legend UK</address> 
</Student> 
</StudentsList> 

, wenn ich die Datei suchen mit XPath in php wie

$allStudents = $xml->xpath("//StudentsList/Student"); 

es gib mir alle Schüler in einer Reihe mit ihren untergeordneten Knoten und Werten wie unten : ich möchte auch zu

Array ([0] => SimpleXMLElement Object ([student_id] => 18700 [firstName] => Jhon [lastName] => Smith [address] => Dragon Vally china) [1] => SimpleXMLElement Object ([student_id] => 18701 [firstName] => Lee [lastName] => Sin [address] => League Of Legend UK) [2] => SimpleXMLElement Object ([student_id] => 18702 [firstName] => Xin [lastName] => Xaho [address] => Shanghi China) [3] => SimpleXMLElement Object ([student_id] => 18703 [firstName] => corki [lastName] => adc [address] => flying machine gun china) [4] => SimpleXMLElement Object ([student_id] => 18704 [firstName] => Kog [lastName] => Maw [address] => Depth of The Hell)) 

aber als ich ein Attribut STUDENT_ID Knoten haben den Wert dieses Attribut erhalten irgendeine bitte vorschlagen, was für das zu tun, google ich viel b ut hat keine richtige Antwort gefunden. Sie gaben Beispiele für die Auswahl von Eltern anhand ihres Attributwertes, aber zumindest fand ich nicht denjenigen, der sie mit dem ganzen Schülerknoten auswählte.

Antwort

1

Sie können auf ein Attribut mit dem Namen foo als $element['foo'] zugreifen, z.

$xml = <<<XML 
    <StudentsList> 
<Student> 
<student_id email="[email protected]">18700</student_id> 
<firstName>Jhon</firstName> 
<lastName>Smith</lastName> 
<address>Dragon Vally china</address> 
</Student> 
<Student> 
<student_id email="[email protected]">18701</student_id> 
<firstName>Lee</firstName> 
<lastName>Sin</lastName> 
<address>League Of Legend UK</address> 
</Student> 
</StudentsList> 
XML; 

$doc = new SimpleXMLElement($xml); 

foreach ($doc->Student as $student) { 
    echo $student->student_id['email'] . "\n"; 
} 

gibt die zwei E-Mail-Adressen und natürlich mit XPath der Code ist das gleiche:

$xml = <<<XML 
    <StudentsList> 
<Student> 
<student_id email="[email protected]">18700</student_id> 
<firstName>Jhon</firstName> 
<lastName>Smith</lastName> 
<address>Dragon Vally china</address> 
</Student> 
<Student> 
<student_id email="[email protected]">18701</student_id> 
<firstName>Lee</firstName> 
<lastName>Sin</lastName> 
<address>League Of Legend UK</address> 
</Student> 
</StudentsList> 
XML; 

$doc = new SimpleXMLElement($xml); 


foreach ($doc->xpath("//StudentsList/Student") as $student) { 
    echo $student->student_id['email'] . "\n"; 
} 
+0

ich kann es tun, wenn ich auf ganze Datei in HTML-Tabelle haben, aber wenn ich in der Datei zu suchen und Ich habe eine Aufzeichnung von spezifischen Studenten, wie ich denke, um sein Element zu bekommen. Ich habe dort ein Array mit Xpath. Oder gibt es eine andere Möglichkeit, die XML-Datei zu durchsuchen? –

+0

Nun, im Array haben Sie Elementknoten und wenn Sie das Array bearbeiten oder auf ein einzelnes Element im Array zugreifen, können Sie auf das Kindelement als '$ student-> student_id' und dann das Attribut als '$ student-> student_id ['email']'. Sehen Sie das hinzugefügte Beispiel. –

+0

Martin danke, ich bin in der Nähe, aber ich bin immer noch nicht in der Lage, den Wert zu erhalten $ studen-> student_id [0] ['email'] es gibt das zurück und ich kann nicht zu diesem Wert gehen SimpleXMLElement Objekt ([0] => [email protected]) Wie kann ich auf diesen Index zugreifen? –

Verwandte Themen