Jump to content
php.lv forumi

SadDemon

Reģistrētie lietotāji
  • Posts

    52
  • Joined

  • Last visited

Profile Information

  • Location
    Rīga

SadDemon's Achievements

Newbie

Newbie (1/14)

  1. saistībā ar šo visu, tika atrasts: $dom->preserveWhiteSpace = false; // izņemam tukšumus pirms ielādes.. parsēšanas $dom->formatOutput = true; // pie saglabāšanas, dati ir smuki sakārtoti
  2. jā, bet ja mērķis ir to visu informāciju pārrakstīt citā (jaunā) failā.. tikai sakārtotu.. vai tā vispār ir pieņemama lieta; vai tas būtu pavisam nepareizi.. nerunājot par to vai tam ir liela/maza nozīme..
  3. Par rekursīvo funkciju sapratu, bet ..lieta, kas neizdodas ir: samazināt atkāpi, jo ar Dom ejot caur nodēm, aizvēršanas tagu tas nemaz neskaita..
  4. Lūdzu mazu piemēru, citādi nekādi neizdodas (pietrūkst zināšanu)..
  5. Ir nepieciešamība pēc kādas funkcijas, kas no: <node><node>text</node><node>text</node></node> galā iegūtu: <node> <node>text</node> <node>text</node> </node> ..paldies!
  6. Nu iespējams pagaidām esmu kaut nedauds virzījies uz priekšu.. Tākā iepriekšējais label man ir pieejams iekš Flash, tad ir iespēja salīdzināt un pārrakstīt.. *.php: <?php function domToArray($node, $level = 0) { $array = array(); // if node has attributes if ($node->hasAttributes()) { $attributes = $node->attributes; if (!is_null($attributes)) { foreach ($attributes as $attribute) { $array[$attribute->name] = $attribute->value; echo "[".$level."]\n".$array[$attribute->name]."<br>"; // if nodes attribute equals value, update attribute if ($array[$attribute->name] == "----.jpg") { $node->setAttribute("label", $array[$attribute->name]." [testējam]"); // save global $dom; global $xml_source; $dom->save($xml_source); } } } } // if node has childnodes if ($node->hasChildNodes()) { $child = $node->childNodes; for ($i = 0; $i < $child->length; $i++) { $iChild = $child->item($i); $array[$iChild->nodeName] = domToArray($iChild, $level+1); } } } $xml_source = "tree_source.xml"; $dom = new DomDocument(); $dom->load($xml_source); domToArray($dom); ?>
  7. Izskaidrošu visu smalkāk: Gala produkts ir administrēšana galerijai iekš Flash.. kur ir tree komponents, kas saņem datus no *.xml: <node label="---- galerijas"> <node label="---- (galerija)"> <node label="---- (kategorija)"> <node label="--.jpg"/> </node> <node label="---- (kategorija)"> <node label="----.jpg"/> <node label="----.jpg"/> <node label="----.jpg"/> </node> </node> </node> ..un datus par attēliem saņem no attiecīga *.xml: <gallery title="----" thumbDir="-----" imageDir="----" random="false"> <category name="----"> <image> <date>----</date> <title>----</title> <desc>----</desc> <thumb>----.jpg</thumb> <img>----.jpg</img> </image> </category> </gallery> Mainot informāciju, ar *.php nomainam konkrētās nodes label atribūtu pirmajā *.xml un informāciju otrajā *.xml.. Te arī tā problēma, kad cenšos pirmajā *.xml failā piekļūt nodēm, ņemot galerijas nodes indexu.. galerijas nodes indexu un attēla nodes indexu..
  8. ..principā nepareizi izteicos, mērķis ir mainīt konkrētam mezglam label atribūtu.. un zinu tikai katras parentNodes un childNodes indeksu..
  9. Balstoties uz v3rb0 iepriekš nopostēto skriptu, mazliet izpratu funkcijas principus un izveidoju līdzīgu funkciju, kas visu iekļauj iekš array().. tas manai acij draudzīgāks izskatās.. *.php <?php function domToArray($node, $level = 0) { $array = array(); // if node has attributes if ($node->hasAttributes()) { $attributes = $node->attributes; if (!is_null($attributes)) { foreach ($attributes as $attribute) { $array[$attribute->name] = $attribute->value; echo "[".$level."]\n".$array[$attribute->name]."<br>"; } } } // if node has childnodes if ($node->hasChildNodes()) { $child = $node->childNodes; for ($i = 0; $i < $child->length; $i++) { $iChild = $child->item($i); $array[$iChild->nodeName] = domToArray($iChild, $level+1); } } } $xml_source = "tree_source.xml"; $dom = new DomDocument(); $dom->load($xml_source); domToArray($dom); ?> Jautājums ir - kā lai piekļūst kādam konkrētam mezglam?
  10. un kā iegūt kādu konkrētu labeli 4. līmenī zinot viņa indexu parentChild'ā?
  11. Liels paldies v3rb0, uzreiz ir grūti sagremot šo visu, tomēr tas ir tas kas vajadzīgs..
  12. Vai tiešām neviens neizpalīdzēs?
  13. Pēc nervus bendējošiem mēģinājumiem, secinājums ir: # izmantojot getElementsByTagName(), visi pakārtotie mezgli nostājas vienā līmenī.. # tātad, ja rakstam - $node = $dom->getElementsByTagName("node")->item(3)->getAttribute("label"); ..iegūsim pirmo mezglu, kur label ir iekļauts "----.jpg".. u.t.t. Šajā gadījumā man tas nekādi neder.. Palūgšu piemēru (netieku skaidrs)! Kā iegūt 4. līmeņa node label?
  14. <?php $xml_source = "tree_source.xml"; $dom = new DomDocument(); $dom->load($xml_source); $node = $dom->childNodes->item(0)->getAttribute("label"); echo $node; ?> ..*.xml: <node label = "---- galerijas"> <node label = "---- (galerija)"> <node label = "---- (kategorija)"> <node label = "----.jpg" /> <node label = "----.jpg" /> <node label = "----.jpg" /> </node> <node label = "---- (kategorija)"> <node label = "----.jpg" /> <node label = "----.jpg" /> <node label = "----.jpg" /> </node> ..iegūstam pirmā mezgla label, bet kā tālak? ..tur arī seko tie error.
  15. ..tik tuvs ar dom un php kopumā vēl neesmu; Vai var palūgt kādu piemēru - kā tad man iegūt tos atribūtus?
×
×
  • Create New...