WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

struct aus einem XML Attribut einer Variablen zuordnen

 

_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2010, 11:18     Titel: struct aus einem XML Attribut einer Variablen zuordnen
  Antworten mit Zitat      
Hallo Zusammen,
ich habe folgenden Sachverhalt:

In einem XML Attribut steht ein struct in seiner Syntax (Bsp.: <Test Aufbau="struct('Key1', 'Hallo', 'Key2', 'Du')"/> )
Diese möchte ich auslesen und einer Variablen zuweisen. Diese Variable soll dann vom Typ struct sein.
Wenn ich das aber im Moment auslese dann wird der Wert ausgelesen und der Variable zugeordnet aber nicht als struct sondern als string.

Gibt es da eine Möglichkeit Matlab klar zu machen, dass er den Wert des Attributes quasi auswerten soll und die Variable ein struct ist?

Mein Code: (xml_file_path ist der pfad zur XML Datei(Benutzereingabe))
Code:

xml_doc = xmlread(xml_file_path);                  
xml_root = xml_doc.getFirstChild;                                            
xml_node = xml_root.getElementsByTagName('Test');
my_structure = xml_node.item(0).getAttribute('Aufbau');
disp(my_structure);
disp(isstruct(my_structure));  %<- ist leider 0
 


Vielen Dank für eure Mühe und Hilfe.

Gruß
Peter


_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2010, 14:46     Titel:
  Antworten mit Zitat      
Hallo Zusammen,
braucht ihr noch weitere Angaben? Fehlt euch was um mir helfen zu können?
Oder ist dies einfach nicht lösbar?

Danke Euch.

Gruß
Peter
 
_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2010, 16:45     Titel:
  Antworten mit Zitat      
schade, dass mir keiner helfen konnte, aber falls es jemanden Interessiert, der Befehl lautet "eval"

Gruß
Peter
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.09.2010, 21:23     Titel:
  Antworten mit Zitat      
Hallo Peter,

ihr macht mich fertig.

Gut, es klappt mit EVAL. Du handlest Dir damit aber ein paar Schwierigkeiten ein: Wäre z.B. gut zu prüfen, ob irgendein Scherzkeks Dir eine XML-Datei unterjubelt, in der dies steht:
<Test Aufbau="!format C:"/>
Ja ja, ich weiss. Heutzutage arbeitet niemand mehr mit Admin-Rechten und man kann die C-Platte nicht so leicht löschen. Aber ich muss ja nicht gleich gut funktionierende Fiesheiten im Forum verbreiten.

Code aus XML-Dateien per EVAL auszuführen ist eine der größten Sicherheitsprobleme in Web-Anwendungen, die in JavaScript, Perl oder PHP geschrieben sind. Laufen tut das, aber man öffnet die Tore weit.

Ich würde deshalb auch in kleinen Programmen (den selbst Window7 hat ja mal als DOS auf eine Diskette gepasst) solche Aufgaben von einem String-Parser lösen lassen. Das ist allerdings wirklich umständlich, weil evetuell sehr viele Möglichkeiten behandelt werden müssen. Deshalb konnte ich Dir auch nicht auf die schnelle einen anbieten.

Wenn Du es weiter mit EVAL machen möchtest, empfehle ich zumindest:
Code:

oder besser:
Code:
try
  CreateSystemBackup;
  ShutDownUnnededSoftware;
  UpdateVirusScanner;
  SetJardDiskToReadOnly;
  eval(theString);
catch
end

;-)

Ich glaube, ich brauche mal Urlaub, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2010, 14:24     Titel:
  Antworten mit Zitat      
hehe... tut mir leid wenn ich dich Nerven koste Jan. ^^
Daran habe ich natürlich nicht gedacht, aber das liegt auch einfach dadran, dass ich das XML File selbst erstelle und somit selbst bestimme was drin steht (hätte ich vielleicht dazu schrieben sollen) und so Befehle wie "Format C:" sind in meinem Fall definitiv nicht möglich.

Aber du hast recht... man könnte dies natürlich auch bösartig nutzen.
Du kannst dies hier gerne entfernen, wenn das nicht im Forum gewünscht ist.

Ich kenn das nur aus anderen Foren, dass es gerne gesehen wird, dass man die Lösung (wenn man eine hat/findet) für nachfolgende veröffentlicht. (Auch wenn das leider nur sehr sehr wenige machen)
Mir ist klar, dass es hier auch gerne gesehen wird(so denke ich zumindestens^^), aber in diesem Fall kann man es bösartig nutzen...das stimmt.


Sorry und btw.: schönen und erholsamen Urlaub Wink
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.10.2010, 20:27     Titel:
  Antworten mit Zitat      
Hallo Peter,

Zitat:
hehe... tut mir leid wenn ich dich Nerven koste Jan.

Kein Problem, nicht [b]Du[/] kostest mich die Nerven, sondern mein Bedürfnis, meine Erfahrungen mit EVAL/ASSIGNIN/GLOBAL/EVALIN-freiem Matlab weiterzugeben.
Das ist ja nicht das Problem der Forum-Teilnehmer, dass ich meine, dass man sich die Schwierigkeiten mit diesen Befehlen einfach sparen sollte und einen ordentlichen Programmierstil mit geordneter hierarchischer Variabel-Verteilung pflegen sollte.

Es ist immer sehr gut für das Forum, wenn Du eine Lösung postest. Danke!
Es ist sogar hilfreich, wenn eine Lösung gezeigt wird, die schwerwiegende Nachteile hat - immerhin kann man dann ja darüber diskutieren.

Es muss ja nicht mal Bösartigkeit sein, die EVAL so tückiscj machen. Ich hatte einmal ein MAT-File ohne Ausgabe-Variable in den Base-Workspace geladen. Dieses MAT-File enthielt die Variable "zeros" und ich brauchte lange, um zu verstehen, wieso nix mehr funktionierte. Immerhin: es hat nichts mehr funktioniert! Dann merkt man wenigstens, dass ein Problem aufgetreten ist. Wenn es aber noch ein bisschen funktioniert, kann das die letzten Nerven kosten.

Freundliche Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.