Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6783[/thread]

Perl und der Kampf mit XML (Seite 2)



<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
esskar
 2005-03-14 18:40
#52581 #52581
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
kann sein; hab auch nicht wirklich drauf geachtet oder mir mühe gegeben um rauszufinden was ich falsch gemacht habe (mir war von vornherein klar, dass es an mir und nicht an dem modul lag; aber deswegen find ich dieses format auch etwas kompliziert, obwohl es auf den ersten blick einfach wirkt). Werde mich also weiter mit XML "rumschlagen".
Crian
 2005-03-15 12:57
#52582 #52582
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Geht mir auch so. Signifikanter Whitespace ist imho ein no-no.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sri
 2005-03-15 14:54
#52583 #52583
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Crian,15.03.2005, 11:57]Geht mir auch so. Signifikanter Whitespace ist imho ein no-no.[/quote]
Das sehe ich anders, XML und YAML haben ganz unterschiedliche Anwendungsbereiche.

XML ist dazu gemacht von Maschinen gelesen und geschrieben zu werden um plattformuebergreifend Daten auszutauschen.

YAML hingegen hat ausserdem den Anspruch von Menschen editierbar zu sein, und zwar nicht nur von Programmierern.

Wenn du einem "normalen" Menschen eine XML und eine YAML konfiguration vorsetzt wird er mit YAML besser klar kommen als mit XML, denn das Einruecken ist eine viel subtilere Art der Strukturierung.\n\n

<!--EDIT|sri|1110891803-->
renee
 2005-03-16 00:02
#52584 #52584
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber XML ist auch nicht wirklich schwierig, finde ich... Die Strukturierung ist durch die Elemente doch recht eindeutig...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sri
 2005-03-16 02:01
#52585 #52585
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=renee,15.03.2005, 23:02]Aber XML ist auch nicht wirklich schwierig, finde ich... Die Strukturierung ist durch die Elemente doch recht eindeutig...[/quote]
Fuer dich und mich, aber fuer normale menschen ist es ein Klammerwald... ;)\n\n

<!--EDIT|sri|1110931345-->
esskar
 2005-03-17 11:00
#52586 #52586
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=ptk,11.03.2005, 18:45]Ich glaube, ich werde mit XML::LibXML gluecklich werden.[/quote]
soweit so gut;
folgendes passiert

ausgehend von dem xml von oben, hab ich folgeneds
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
my $iter = XML::LibXML::Iterator->new($root);

while($iter->next) {
my $buttonref = undef;
my $node = $iter->current;
my $name = lc($node->getName);
if($name eq 'button') {
$buttonref = {};
$buttonref->{BUTTON_ID} = $node->getAttribute('id');
$buttonref->{BUTTON_TITLE} = $node->getAttribute('title');
$buttonref->{BUTTON_TEXT} = $node->getAttribute('text');
$buttonref->{BUTTON_ALIGN} = $node->getAttribute('align');
$buttonref->{BUTTON_ISDROPDOWN} = $node->getAttribute('dropdown');

my $iter = XML::LibXML::Iterator->new($node);
while($iter->next) {
my $node = $iter->current;
my $name = lc($node->getName);
if($name eq 'image') {
$buttonref->{BUTTON_IMAGE_SRC} = $node->getAttribute('src');
$buttonref->{BUTTON_IMAGE_WIDTH} = $node->getAttribute('width');
$buttonref->{BUTTON_IMAGE_HEIGHT} = $node->getAttribute('height');
$buttonref->{BUTTON_IMAGE_ALT} = $node->getAttribute('alt');
} elsif($name eq 'action') {
my $type = $node->getAttribute('type');
my $prefix = 'BUTTON_ACTION_'.uc($type);
$buttonref->{$prefix} = 1;
$buttonref->{$prefix.'_EVENT'} = $node->getAttribute('event');
$buttonref->{$prefix.'_ACTION'} = $node->getAttribute('action');
}
}
} elsif($name eq 'seperator') {
$buttonref = {};
$buttonref->{BUTTON_ISSEPERATOR} = 1;
}

if(defined $buttonref) {
if(lc($buttonref->{BUTTON_ALIGN}) eq 'right') {
push @buttonsright, $buttonref;
} else {
push @buttonsleft, $buttonref;
}
}
}


leider ist jetzt bei allen "button" das "image" immer "print"!
Warum?
esskar
 2005-03-17 11:40
#52587 #52587
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
achso, der iterator iteriert über alles
also zuerst button, dann image, button, image, seperator ...
ach wie dumm
ptk
 2005-03-17 11:45
#52588 #52588
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich glaube, der Iterator geht immer von oben nach unten durch, egal, wie die Elemente eingerückt sind. Mach doch einfach mal ein print $node->toString an strategisch guenstigen Stellen, um zu sehen, wie die Abarbeitungsreihenfolge ist.

Ich wuerde eher mit findnodes() arbeiten, siehe XML::LibXML::Node.
esskar
 2005-03-17 13:10
#52589 #52589
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=ptk,17.03.2005, 10:45]Ich glaube, der Iterator geht immer von oben nach unten durch, egal, wie die Elemente eingerückt sind. Mach doch einfach mal ein print $node->toString an strategisch guenstigen Stellen, um zu sehen, wie die Abarbeitungsreihenfolge ist.

Ich wuerde eher mit findnodes() arbeiten, siehe XML::LibXML::Node.[/quote]
ja; hab ich jetzt auch rausgefunden;
als ich Iterator gelesen hab, hab ich mich gefreut wie ein kleines Kind :) bin jetzt aber auf findnodes umgestiegen...
esskar
 2005-03-17 22:56
#52590 #52590
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
@ptk:

folgenedes xml
Code: (dl )
1
2
3
4
5
6
<language name="german">
  <section name="toolbar">
     <word name="new" value="Neu" />
     <word name="save" value="Speichern" />
  </section>
</language>


wie würdest du nun für das <word> mit name="save" das dazugehörige value-Attribut finden?

oder wäre dieses Format sinnvoller?
Code: (dl )
1
2
3
4
5
6
<language name="german">
<section name="toolbar">
<new value="Neu" />
<save value="Speichern" />
</section>
</language>
\n\n

<!--EDIT|esskar|1111093040-->
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2005-03-11 19:00.