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

xml zu txt dann splitten oder regx ?



<< >> 7 Einträge, 1 Seite
fraggs
 2006-11-16 13:10
#71810 #71810
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo alle zusammen habe eine aufgabe aus einem XML file ein paar daten zuziehen. Nun ich kriege es immer noch nicht hin richtig mit den Regular Expressions zu arbeiten aber versuchen wuerde ich es.

Code: (dl )
1
2
3
4
5
 <all name="all classes">
     <coverage type="class, %" value="96%  (77/80)"/>
     <coverage type="method, %" value="66%  (391/589)"/>
     <coverage type="block, %" value="70%  (11659/16578)"/>
     <coverage type="line, %" value="70%  (2421.3/3469)"/>


das ist der code aus diesen zeilen muesste zb. all classes raus gezogen werden dann darunter: class 96% 77/80
dies soll in ein txt file geschrieben werde welches dann so aussieht

Quote
class 96% (77/80)
method 66%  (391/589)
block 70%  (11659/16578 )
line 70% (2421.3/3469)


dh. ich muss bis auf die ersten " alles raus dann bis auf das , kommt der type und dann zwischen den naechsten " " ist die Prozent zahl und die vollstaendigkeit aus einer total zahl.

waere das am besten mit einem split ? die ganze XML ist sehr lange und dort gibt es 5 von diesen "haupt" blocks wo die infos drin stehen.

muss ich dann erst die XML in ein .txt einlesen so dass ich diese stuecke von der XML dann in einen array rein schiebe ?

ich habe zwar ein paar ideen aber wirkleich keinen plan wie ich das angehe.

danke schonmal und bitte nicht flamen flak von jemanden brauche ich heute nicht unbedingt.\n\n

<!--EDIT|fraggs|1163675485-->
mmm twix
renee
 2006-11-16 13:18
#71811 #71811
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest ein Modul verwenden um das XML zu parsen. Z.B. CPAN:XML::Simple oder CPAN:XML::Twig...


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $file = './test.xml';
my $ref = XMLin($file);

for my $coverage(@{$ref->{coverage}}){
(my $type = $coverage->{type}) =~ s/, %$//;
print $type," -- ",$coverage->{value},"\n";
}


test.xml:
Code: (dl )
1
2
3
4
5
6
 <all name="all classes">
<coverage type="class, %" value="96% (77/80)"/>
<coverage type="method, %" value="66% (391/589)"/>
<coverage type="block, %" value="70% (11659/16578)"/>
<coverage type="line, %" value="70% (2421.3/3469)"/>
</all>
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/
fraggs
 2006-11-16 15:27
#71812 #71812
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
dh XML::Twig waere geeignet da die XML's sau lang sind und auch in dem "tree" mode sind.

danke werde smir Twig genauer anschuen sieht so aus als ob ich dies brauche

EDIT: um Twig zubenutzen muss ich das modul installieren was ich leider nicht kann :( mal mit dem admin reden bin jetzt stuck mit simple aber sollte auch gehen.

frage: wenn das xml einen baum aufbau hat wie komme ich von baum zu baum ?\n\n

<!--EDIT|fraggs|1163689333-->
mmm twix
ptk
 2006-11-16 23:49
#71813 #71813
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
XML::Twig ist pure-perl und benötigt nur XML::Parser, welches nicht pure-perl ist. Wenn du nicht einmal XML::Parser hast und auch nicht installieren darfst, dann tust du mir leid :-)

Aber es gibt wohl auch einen kompletten PurePerl-XML-Parser. Such mal im CPAN.
fraggs
 2006-11-20 11:12
#71814 #71814
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
kk dann hatte ich nicht weiter gelesen im twig cpan :) sieht so aus als ob es nun doch geht mal sehen. danke fuer die info hat alles etwas rumgedreht
mmm twix
fraggs
 2006-11-20 15:41
#71815 #71815
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
so habe mir das angeschaut und es ist soweit schoen und gut ... doch wo installiere ich es hin ? in das lib verzeichnes von perl ? ich weis wie ich es "make" aber wo werden die fertigen daten hingepackt ?
mmm twix
renee
 2006-11-20 15:57
#71816 #71816
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du den "vierzeiler" perl Makefile.PL
make
make test
make install


machst, bekommst Du auch gesagt, wohin das installiert wird.

Über perl Makfile.PL PREFIX=/path/... LIB=/path/... kannst Du das Modul auch an einen beliebigen Ort installieren.
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/
<< >> 7 Einträge, 1 Seite



View all threads created 2006-11-16 13:10.