Thread Verschiedene Namen und Attribute in XML (LibXML) (4 answers)
Opened by Chris271 at 2015-09-16 16:42

Chris271
 2015-09-17 09:27
#182215 #182215
User since
2015-09-16
5 Artikel
BenutzerIn
[default_avatar]
Hey janus,

vielen Dank für den Tipp, die komplette Ausgabe hab ich mit dem Dumper hinbekommen.

Zu meinem anderen Problem (ändernde Parameternamen) hab ich aber noch keine Lösung. Das folgende Beispiel soll mein Problem nochmal erläutern:


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#!/usr/bin/perl

use strict;
use warnings;

use XML::LibXML;
use Data::Dumper;

# my $filename = 'library.xml'; #- ORIG
my $filename = 'data.xml';


my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($filename);


my $xpath = '/Model/packagedElement/@name';
print Dumper $doc->findvalue($xpath);

# print Dumper $doc->toString(1);


Mit dem oberen Beispiel kann ich jetzt in der folgenden Zeile genau das Attribut "name" auslesen (Ergebnis: Chaotisches Pendel). Ich wusste aber bereits vorher das das Attribut den Namen "name" trägt, somit konnte ich dieses Arrtubut direkt adressieren.

Code: (dl )
<packagedElement type="Package" id="EAPK_5CA989EF_DA2A_47b0_8FD4_DDA64A360A99" name="Chaotisches_Pendel">


So weit so gut.



Gibt es aber ne Möglichkeit bei sich ändernden Attributnamen (die ich vorher nicht weiß!!) auf die Attribute zuzugreifen. Es handelt sich um ein exportiertes Modell bei dem ich vorher nicht weiß, welche Attribute gesetzt wurden.

z.B.
Code: (dl )
1
2
3
<Revolute base_Class="EAID_A2A300B3_4664_4f05_8DA6_6A5CB89FAA15" cylinderDiameter="world.defaultJointWidth" stateSelect="StateSelect.prefer" animation="true" useAxisFlange="false" cylinderLength="world.defaultJointLength" n="{0,0,1}"/>

<BodyBox base_Class="EAID_BD066F94_84A8_4262_9A57_5C8492934D8A" length="Modelica.Math.Vectors.length(r - r_shape)" innerWidth="0" angles_fixed="false" r_shape="{0,0,0}" animation="true" width="length/world.defaultWidthFraction" z_0_fixed="false" enforceStates="false" innerHeight="innerWidth" useQuaternions="true" height="width" w_0_fixed="false" widthDirection="{0,1,0}" r="{0.5,0,0}" density="7700"/>



Wie in den beiden Beispiele zu sehen, kann ich die Attributnamen nicht vorhersehen :(.

Weiß jemand eine Lösung zu diesem Problem? Im Notfall muss ich das per RegEx lösen aber das will ich eigentlich vermeiden

Grß
Chris271

View full thread Verschiedene Namen und Attribute in XML (LibXML)