Thread XML-Parser 2 Datei (5 answers)
Opened by Henri at 2015-04-08 18:19

Gast Henri
 2015-04-08 18:19
#180608 #180608
Hallo Leule

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<Profile origin="get" version="2.1" date="2013.05.20">
<Catalog id="sys" version="2.1">
<Parameter name="prim" value="2"/>
<Parameter name="second" value="3"/>
<Parameter name="copy" value="4"/>
<Parameter name="force" value="1"/>
<Parameter name="always" value="0"/>
<Parameter name="type" value="5" Type="False"/>
<Parameter name="memory" value="allow"/>
</Catalog>
</profile>


ich bin wieder, ich habe die Parser von der folgende XML-Datei1 geschafft
indem ich nur die Attribut name haben wollte. meine Code lautet
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
use warnings;
use XML::Twig;

my $twig= XML::Twig->new(
               twig_handlers => { 'Parameter' => sub { $, = ",";
                                                      print
                                                        $_->{'att'}->{'name'}. $,
                                                      }
                                }
               );

$twig->parsefile('test.xml');


wenn man das code auf der XML-Datei lauft lasst die Ausgabe lautet:
prim, second, copy, forced, always, Type, memory

jetzt habe ich ein zweite XML-Datei2 mit dem in gern mal irgendwie gleichzeitig vergleichen möchte, und wenn sie darauf achten hat diese zweite ein Parameter wenige als der XML-Datei1 und zwar <Parameter name="type" value="5" Type="False"/>

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
 <?xml version="1.0" encoding="UTF-8"?>
<Profile origin="get" version="2.0.1" date="2015-03-19T10:38:58Z">
<Catalog id="sysdumpdevParam" version="2.1">
<Parameter name="prim" value="/dev/lg_dumplv"/>
<Parameter name="second" value="/dev/sysdumpnull"/>
<Parameter name="copy" value="/var/adm/ras"/>
<Parameter name="forced" value="1"/>
<Parameter name="always" value="0"/>
<Parameter name="memory" value="disallow"/>
</Catalog>
</Profile>


ich möchte ein code schreibe der mir als Ausgabe geben würde:

name=>prim, second, copy, forced, always, Type, memory

value=>/dev/lg_dumplv, /dev/sysdumpnull, /var/adm/ras, 1, 0, fault , disallow
dh nur die Value von der Zweite XML-Datei(ist zwar schaffbar), aber es sollte falls er keine entsprechende attribute name gefunden hat schreibt er an der stelle fault, wie sie oben auf der Ausgabe sehen
können.

prim => /dev/lg_dumplv,
second => /dev/sysdumpnull,
copy => /var/adm/ras,
forced => 1,
always => 0,
Type entspricht zu gar nichts dann "fault" schreiben,
memory => disallow.

Danke für ihre Mithilfe.

modedit Editiert von GwenDragon: Code repariert
Last edited: 2015-04-08 18:24:48 +0200 (CEST)

View full thread XML-Parser 2 Datei