Schrift
[thread]10706[/thread]

XML::Simple

Leser: 1


<< >> 9 Einträge, 1 Seite
worst_case
 2007-11-02 09:54
#101677 #101677
User since
2007-08-18
46 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe eine XML-Datei die so aussieht.

<opt>
<m1 drehzahl="5" temp_1="6" temp_2="2222"/>
<m2 drehzahl="5" temp_1="6" temp_2="2222"/>
usw.
</opt>

Wenn ich die Schluessel beschreibe habe ich nicht die Schluesselnamen
d.h.
Ich moechte einfach schreiben:

m1 (Name bekannt) 1. Messwert soll nach "drehzahl" 2. Messwert soll nach "temp_1" usw. geschrieben werden. Meine Messwerte bekomme ich in einer einfachen Tabelle.

Ich habe nur den Namen "m1" / "m2" usw. jedoch nicht die einzelnen Schluessel.
Diese stehen mir erst beim lesen der "Datenbank" zur Verfuegung.
Mir ist klar das ich die Reihenfolge der Schluessel niemals verandern darf.

Gibt es hier eine Moeglichkeit mit XML::Simple (Ich will beim selben Modul bleiben)

Danke
worst_case
renee
 2007-11-02 10:02
#101678 #101678
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mir ist nicht so klar, was Du machen willst. Versuche es bitte nochmal genauer zu beschreiben...
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/
nepos
 2007-11-02 10:14
#101679 #101679
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jo, beschreib bitte mal genauer, was du machen willst. Blicke bei deiner Beschreibung auch noch nicht so durch.
Gast Gast
 2007-11-03 10:23
#101729 #101729
Morgen,

sorry das ich mich etwas unverstaendlich ausgedrueckt habe.

Ich bekomme ein Liste mit Messwerten.

1
2
3
4
5
usw.

Diese moechte ich in ein XML-Dokument schreiben. Nun habe ich eine XML-Datei angelegt in der die Schluesselnamen in der gleichen Reihenfolge stehen wie die Messwerte die ich bekomme.

z.B.

Messwert1 soll spaeter ueber den Schluessel "temperatur_og" gelesen werden,
Messwert2 soll spaeter ueber den Schluessel "temperatur_ug" gelesen werden,
Den Hauptschluessel "m1" habe ich, jedoch beim schreiben kennne ich "temperatur_og usw" nicht, ich weis nur das es der 1 oder x'te Schluessel ist.
<opt>
<m1 temperatur_og="5" temperatur_ug="6"/>
<m2 temperatur_og="5" temperatur_ug="6"/>
<m3 temperatur_og="5" temperatur_ug="6"/>
</opt>

Es sollte eine Funktion sein die mir alle vorhandenen Schluessel von "m1" zurueckliefert (in der richtigen Reigenfolge), dann kann ich die Schluessel einzeln ansprechen und die Messwerte der Reihe nach in die XML-Datei schreiben.

Danke
worst_case
renee
 2007-11-03 10:30
#101730 #101730
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es wird aus den Beispielen immer noch nicht klar, *wie* die "Transformation" stattfindet. Woher hast Du die "5" und die "6"...

Gegeben sei die Liste

1
2
3
4
5
6

Was soll für genau diese Liste am Ende rauskommen?
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/
Gast Gast
 2007-11-03 11:02
#101731 #101731
Hallo,

die 1-6 sind Messwerte die ich bekomme.

Nun nehme ich die Messwerte und sage:

Nehme die Zeile mit dem Hauptschluessel "m1" (den kenne ich)
und
1. Messwert soll an den ersten Schluessel geschieben werden (ohne Schluesselnahmen)

2. Messwert soll an der zweiten Schluessel geschieben werden (ohne Schluesselnahmen)

usw.

<m1 mwert1="1" mwert2="2" mwert3="3" mwert4="4" mwert5="5" mwert6="6"/>
<m2 mwert1="1" mwert2="2" mwert3="3" mwert4="4" mwert5="5" mwert6="6"/>
<m3 mwert1="1" mwert2="2" mwert3="3" mwert4="4" mwert5="5" mwert6="6"/>


Ich brauche eine Funktion die mir vom Hauptschluesse "m1" alle Schluesselnahmen in einem Array zurueckliefert. (in der richtigen Reihenfolge von links nach rechts)

Danke
worst_case
weismat
 2007-11-03 11:14
#101732 #101732
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Falls ich richtig verstanden habe, was worst_case machen will, dann sehe ich ein Problem, daß XML Dateien grundsätzlich nicht sortiert vom XML::Simple geparsed werden, da XML::Simple in einen Tree parsed - d.h. die einzige Sortierung ergibt sich alphabetisch, ansonsten ist es ein Baum ohne Sortierung, es sein denn, Du arbeitest mit Arrays in Deinen XML-File.
Zum Schreiben der Datei mußt Du einfach eine Struktur anlegen und dann ausgeben.
Dein Meta-XML müßte ungefähr so aussehen:
<opt>
<key>temperatur_ug</key>
<key>temperatur_ug</key>
</opt>
Ansonsten würde ich Dir empfehlen, vor allem perldsc - Perl Data Structures Cookbook anzuschauen, damit Du mit den Datenstrukturen umgehen lernst.
Gast Gast
 2007-11-09 11:24
#102101 #102101
Hallo,

das ist natürlich schlecht (alphabetische Sortiereung)
Dann muss ich mir etwas anderes überlegen.

Danke
worst_case
renee
 2007-11-09 11:34
#102103 #102103
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir mal CPAN:XML::TreePP an. Wenn Du noch CPAN:Tie::IxHash hast, kannst Du die Option use_ixhash setzen. Damit bleibt die Reihenfolge erhalten...

----
Modedit Gwendragon:
tt-Tag repariert
----
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/
<< >> 9 Einträge, 1 Seite



View all threads created 2007-11-02 09:54.