Schrift
[thread]415[/thread]

xml problem



<< >> 7 Einträge, 1 Seite
Schakal
 2005-01-26 16:05
#4235 #4235
User since
2005-01-26
4 Artikel
BenutzerIn
[default_avatar]
hi,

ich habe verschiedene xml files in denen content gespeichert ist. ich benötige aber nicht immer den ganzen content, deshalb frage ich nur einfach die tags ab, die ich brauche... (content ist sprachabhängig)

my $tagtest = "<test>\n<test2>descht</test2>\n<test3><ge_test>getestet</ge_test2>\n<en_test2>tested</en_test2>\n</test3>\n</test>\n";

ich lade also das komplette file in nen string und wende die untere fkt an.

----------------funktion---------------------
Code: (dl )
1
2
3
4
5
6
7
8
my $string = shift();
my $tag = shift();
my $content;

$string =~ /<$tag>(.*)<\/$tag>/ism;
$content = $1;

return ( $content );

--------------------------------------------

ich vermute, dass ich einfach mal wieder probleme mit den regulären ausdrücken habe.

meine meinung ist, das ich dafür nicht extra nen xml parser brauch - wobei ich auch nicht weis, welchen mein provider zur verfügung stellt.

falls ihr mich eines besseren belehren könnt oder bessere ideen habt - bitte belehrt mich!!
-> die lösung sollte nur schnell sein!!! :)

danke, gruß schakal

edit renee: ne runde [code]-Tags spendiert\n\n

<!--EDIT|renee|1106749528-->
Relais
 2005-01-26 16:12
#4236 #4236
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dein XML ist fehlerhaft: <ge_test>...</ge_test2>

Die Antwort auf Deine Fragen wurde in Deiner vorherigen Frage heute gegeben, verwende nicht .* sondern .*? aus dort erklärtem Grunde und denk dran, es könnte mehrere Ergebnisse geben, also würde ich die Resultate vorsichtshalber einem Array zuweisen und den zurückgeben.

Edit: Beitrag verlinkt\n\n

<!--EDIT|Relais|1106765762-->
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Schakal
 2005-01-26 16:17
#4237 #4237
User since
2005-01-26
4 Artikel
BenutzerIn
[default_avatar]
leider scheint der artikel von heut morgen verschwunden, aber es funktioniert -vielen dank!

benötige ich deiner meinung nach für so etwas ein xml parser modul??
renee
 2005-01-26 16:27
#4238 #4238
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Beitrag von heute morgen ist nicht verschwunden, nur dem richtigen Forum zugeordnet worden und mit einem sinnigeren Titel versehen worden. Hier findest Du ihn: http://board.perl-community.de/cgi-bin....;t=1190
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/
Crian
 2005-01-26 18:42
#4239 #4239
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
> <$tag>(.*)<\/$tag>

Ich verwende dafür gern

Code: (dl )
<([A-Z]+)>([^<>]+)</\1>


(bei großgeschriebenen tag's, sonst halt [a-z]), wenn es um tags geht, innerhalb derer keine weiteren Tags vorkommen können. Geht es um Tags, in denen noch andere Tags enthalten sein können, so nehme ich

Code: (dl )
<TAGNAME>((?:(?!</TAGNAME).)++)</TAGNAME>


Wenn es schnell gehen soll, benutze keine externen Variablen im Suchteil, das Verlangsamt die ganze Geschichte ungemein.
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
mordur
 2005-01-27 09:20
#4240 #4240
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mit Blick auf die Zukunft würde ich vielleicht doch einen Parser nehmen oder ein XML-Modul. Dann kannst du die Tags einzeln ansteuern, beliebig verändern, neu schreiben, Werte setzen etc. pp. Bei kleineren Files kann mans noch mit Regex machen, wenn es mehr wird verliert man leicht den Überblick.
CPAN::XML::Checker ein Modul zum Prüfen auf gültige XML-Dateien.
CPAN::XML::DOM
CPAN::XML::Parser
CPAN::XML::Simple
ptk
 2005-01-27 11:56
#4241 #4241
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Der XML-Experte hier empfiehlt CPAN:XML::LibXML (z.B. XML::LibXML::SAX).
<< >> 7 Einträge, 1 Seite



View all threads created 2005-01-26 16:05.