PHP5: alt düğümler listesi (child_nodes eşdeğer ()) üzerinden yineleme?

2 Cevap php

Tümü,

Ben şöyle bir XML belgesi var:

<root>
    <profile>
        <childA>
        <childB>
        <childC>
    <profile>
    <blah>
    <blah>
    <foo>
    <bar>
<root>

Ben (vb, 'childâ', 'childB') bu çocukların arasında yineleme sonra, 'profil' düğümü kapmak mümkün olmak istiyorum

Şimdiye kadar, benim kod şöyle görünür:

$doc = new DomDocument();
$doc->loadXML(file_get_contents("php://input"));
$profile_node = $doc->getElementsByTagName("profile")->item(0);

Şimdiye kadar, çok iyi. $ Profile_node istiyorum ne sahiptir.

PHP4, ben böyle bir şey yapmak istiyorum sanırım:

$childnodes = $profile_node->child_nodes();
foreach ($childnodes as $node) {
    // do something with this node
}

Ama PHP5'ta child_nodes eşdeğer () bulamıyor.

Ben hemen hemen PHP ile ilgili bir çaylak olduğum için, ben gerçekten bir kod örneği takdir ediyorum, bu yüzden tam sözdizimi görebilirsiniz.

2 Cevap

php manual göre, DomNode sınıf bir kamu $ childNodes değişken vardır. Bunu doğrudan erişebilirsiniz:

foreach ($profile_node->childNodes as $node) {
    // do something with this node
}

Sadece okumak gerekiyorsa, ben simplexml paketini kullanarak öneririm:

$xml = simplexml_load_file('php://input');
$childnodes = $xml->xpath("//profile/child::*");
foreach($childnodes as $node){
  // do something
}

SimpleXML paketi ve DOM paketi değiştirilebilir vardır: Eğer DOM'ye SimpleXML alabilirsiniz dom_import_simplexml() kullanarak nesneleri.