Schrift
[thread]11518[/thread]

[Simple::XML -> XMLout] Attribut-Problem

Leser: 3


<< >> 4 Einträge, 1 Seite
burnersk
 2008-03-25 11:54
#107440 #107440
User since
2008-03-25
83 Artikel
BenutzerIn
[default_avatar]
Hallo.

Ich habe folgende Struktur:
Code (perl): (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
$reviews = {
  'body' => {
    'review' => [
      {
        'medshort' => 'Auto Bild',
        'medium' => 'Auto Bild 40/2001 5. Oktober',
        'remarks' => 'Notensystem Schnee: 3+ Nässe: 2+ Trocken: 2|Stärken:sehrgutes Handlingverhalten bei Nässe, gute Sicherheitsreserven bei Aquaplaning, angenehmes Fahrverhalten auf trockener Bahn. Schwächen: durchschnittliches Abschneiden bei den Tests auf verschneiter Piste|',
        'id' => '1136',
        'rank' => undef,
        'note' => undef
      },
      {
        'medshort' => 'ADAC',
        'medium' => 'ADAC motorwelt  10/2000',
        'remarks' => '**|Bestnote auf Nässe, gut auf trockener Fahrbahn, etwas schwächer auf Schnee (Abwertung), relativ lautes Aussengeräusch|Högsta betyg på blöt väg (relativt opåverkad av vattenplaning). Riktigt bra värde även på torrare vägar, på snö, och på is. ',
        'id' => '1137',
        'rank' => '*****',
        'note' => '2'
      }
    ]
  },
  'header' => {
    'errstr' => undef,
    'search' => {
      'profil' => 'W 240 Snowsport',
      'marke' => 'Pirelli',
      'groesse' => 'Wi|205|55|16|V'
    },
    'rows' => '2'
  }
};


Diese soll nun via XMLout in eine XML Struktur exportiert weden:
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
<reviews>
<body>
<review id="1136">
<medshort>Auto Bild</medshort>
<medium>Auto Bild 40/2001 5. Oktober</medium>
<remarks>Notensystem Schnee: 3+ Nässe: 2+ Trocken: 2|Stärken:sehrgutes Handlingverhalten bei Nässe, gute Sicherheitsreserven bei Aquaplaning, angenehmes Fahrverhalten auf trockener Bahn. Schwächen: durchschnittliches Abschneiden bei den Tests auf verschneiter Piste|</remarks>
<rank />
<note />
</review>
<review id="1137">
<medshort>ADAC</medshort>
<medium>ADAC motorwelt 10/2000</medium>
<remarks>**|Bestnote auf Nässe, gut auf trockener Fahrbahn, etwas schwächer auf Schnee (Abwertung), relativ lautes Aussengeräusch|Högsta betyg på blöt väg (relativt opåverkad av vattenplaning). Riktigt bra värde även på torrare vägar, på snö, och på is. </remarks>
<rank>*****</rank>
<note>2</note>
</review>
</body>
<header>
<errstr />
<search>
<profil>W 240 Snowsport</profil>
<marke>Pirelli</marke>
<groesse>Wi|205|55|16|V</groesse>
</search>
<rows>2</rows>
</header>
</reviews>


Ich habe es schon verzweifelt versucht. Entweder XMLout setzt alles als Attribut oder alles als einzelne Tags.
Leider muss ich mich an diese XML Vorgabe halten.
Momentan sieht mein XMLout Objekt so aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $xml = XMLout($return,
                         'AttrIndent' => '1',
                         'KeepRoot' => '1',
                         'KeyAttr' => 'id',
                         'NoAttr' => '0',
                         'NoEscape' => '0',
                         'NoIndent' => '0',
                         'NoSort' => '0',
                         'RootName' => 'reviews',
                         'SuppressEmpty' => '0',
                         'XMLDecl' => '1',
                        );
MisterL
 2008-03-25 19:43
#107480 #107480
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Ich feuere hier einfach mal den Hinweis auf Kapitel 22.10 des Perl Kochbuchs rein, also XML::Simple. Das Buch gibt es unter http://books.google.de/ zum Reinschauen
“Perl is the only language that looks the same before and after RSA encryption.”
xiconfjs
 2008-08-27 11:56
#114028 #114028
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi, ich habe gerade das gleiche Problem, dass ich einen Hash in eine bestimmte XML-Form bringen möchte. Bei GoogleBooks kann ich mir genau diese Seite nicht anzeigen lassen ;)

Nämlich diesen Hash:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
$VAR1 = {
          'database' => {
                        'password' => '1234',
                        'type' => 'mysql',
                        'username' => '123',
                        'host' => '127.0.0.1'
                      },
          'tables' => {
                      'user' => 'users'
                    }
        };


in diese XML-Form:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0"?>
<config>
<database>
<type>mysql</type>
<host>127.0.0.1</host>
<username>123</username>
<password>1234</password>
</database>
<tables>
<user>users</user>
</tables>
</config>


Aber mit XML::Simple bekomme ich bestenfalls diese XML-Form hin:
Code: (dl )
1
2
3
4
<opt>
<database host="127.0.0.1" password="1234" type="mysql" username="123" />
<tables user="users" />
</opt>


Ich bin am Verzweifeln
renee
 2008-08-27 12:10
#114029 #114029
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;
use warnings;
use XML::Simple;

my $VAR1 = {
          'database' => {
                        'password' => '1234',
                        'type' => 'mysql',
                        'username' => '123',
                        'host' => '127.0.0.1'
                      },
          'tables' => {
                      'user' => 'users'
                    }
        };

print XMLout( { config => $VAR1 }, AttrIndent => 1, KeepRoot => 1, NoAttr => 1 );
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/
<< >> 4 Einträge, 1 Seite



View all threads created 2008-03-25 11:54.