Jump to content
php.lv forumi

Xml struktūra


SadDemon

Recommended Posts

Diezgan vienkārša rekursīva funkcija. Apstaigā XML kā koku vai nu izmantojot SAX, vai DOM parseri. Glabā kautkur tekošo līmeni un pirms katras nodes izdrukāšanas izdrukā 4*līmenis atstarpes. Katreiz ieejot jaunā nodē palielini līmeni par 1, izejot no nodes - samazini par 1.

Link to comment
Share on other sites

Forumam ir lieliska iespēja - Search. Par rekursīvām funkcijām jau N-reizes bijis runāts...

 

function abc($node, $level = 0)
{
display_N_spaces(4*$level);
for each($node->childs as $child)
{
	abc($child, $level + 1);
}
}

abc($root);

Link to comment
Share on other sites

Ar to atkāpes samazināšanu es biju gribējis teikt, ka līmenis pats samazināsies izejot no rekursīvās funkcijas. To tev pašam nav jādara. Nav nekādi aizvēršanas tagi jāskaita (tas tak loģiski - uz katru atvēršanas tagu ir viens aizvēršanas, tāpēc tā ir lieka informācija, kuru DOM kokā nevajag glabāt).

 

Paskaties vēlreiz uz manu piemēru - kāpēc tam nav vajadzīgs nekāds aizvēršanas tags.

Link to comment
Share on other sites

pārrakstīt citā failā ar kādu jēgu ? Ka starp tagiem būtu atstarpes, new-lines un tabi!?

XML nekad nav bijis priekš acīm, bet priekš programmas. Lieku reizi kaut ko procesēt un iespējams pa vidu kaut ko pakāst.. enkodingu vai vēl kaut ko... nu sorry.

Link to comment
Share on other sites

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

Edited by SadDemon
Link to comment
Share on other sites

×
×
  • Create New...