2016-05-28 10 views
0

みなさん、こんにちはとあまりにもその属性値を持つノード全体を選択します。私は私は奇妙な質問(私のためにその奇妙な)を持っているのxpath

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

ようなPHPで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> 

:私は以下のようなXMLファイル を持っています:

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)) 

しかし、私はあまりにもいずれかが、そのために何をすべきかを提案してくださいすることができ、その属性の値を取得したいノードをSTUDENT_IDする属性を持っているように私はたくさんbをグーグルutは正解を見つけられませんでした。彼らはその属性値によって親を選択するための例を与えたが、少なくとも私は、学生のノード全体でそれを選択するものを見つけることができませんでした。

答えて

1

あなたは、例えば、$element['foo']としてfooという名前の属性にアクセスすることができます

$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"; 
} 

XPathのコードを持つ2つのメールアドレスを出力し、そしてもちろんのは同じです:

$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

私はHTMLテーブルにファイル全体を持っているとき、私はそれを行うことができますが、私は、ファイルを検索するときと私は特定の生徒の記録を得て、どのようにしてその要素を得るのだろうか。私はそこにxpathを使って配列を得ました。または –

+0

まあ、配列内のあなたが要素ノードを持っていて、配列を処理するか、配列内の単一の要素にアクセスするときに$スチューデント> student_id'と 'として子要素にアクセスすることができますxmlファイルを検索するための他の方法がありますその後、 '$スチューデント> STUDENT_ID [ 'メール']'などの属性。追加されたサンプルを参照してください。 –

+0

マーティンのおかげで、私は近くに得たが、私はまだ使用された値を取得することができません$ studen-> STUDENT_ID [0] [「メール」]は、それがこれを返し、私は、この値SimpleXMLElementオブジェクトに行くことができません([0] => [email protected])どうすればそのインデックスにアクセスできますか? –

関連する問題