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

Problem beim auslesen einer XML Datei

 

marck3005
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2017, 10:05     Titel: Problem beim auslesen einer XML Datei
  Antworten mit Zitat      
Servus liebe Matlab-Freunde,

ich hadere jetzt schon längere Zeit mit etwas vermutlich sehr einfachen. Ich möchte gerne mehrere Dinge aus einem XML File mittels Matlab auslesen (DOM).

Die Struktur des XML Files sieht etwa wie folgend aus:
Code:
<Waypoint waypointLongName="OBOQA" sequenceId="50" creationMethod="auto" waypointId="OBOQA" waypointName="OBOQA" countryICAOCode="ED">
         <Coordinates latitude="15682" longitude="264658"/>
         <Airway>BIBT4F</Airway>
         <Altitude>
            <EstimatedAltitude>
               <Value unit="ft/100">180</Value>
            </EstimatedAltitude>
         </Altitude>
</Waypoint>


Ich schaffe es die Attribute des Tags Coordinates auszulesen und ich schaffe es auch den "Value: 180" im "EstimatedAltitude" Tag auszulesen.
Jetzt habe ich versucht an den Wert des Tags Airway (BIBT4F) zukommen und scheitere kläglich. Ständig erhalte ich Meldungen wie
Zitat:
Undefined function 'getTextContent' for input arguments of type 'org.apache.xerces.dom.DeepNodeListImpl'.
oder
Zitat:
Struct contents reference from a non-struct array object.

Folgende Befehle habe ich bisher getestet und bin gescheitert.
Code:
waypoint(i+1).airway=waypoints.item(i).getElementsByTagName('Airway').item(0).getTextContent;

Code:
   waypoint(i+1).airway=waypoints.item(i).getElementsByTagName('Airway').getTextContent;


Die Matlab Doku und Google haben bisher keine Lösung gebracht. Das kann doch aber nicht so schwer sein. Vielleicht kann jemand von euch mir einen Hinweis geben. Ich steh wahrscheinlich nur auf dem Schlauch.

Vielen Dank und liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.09.2017, 15:42     Titel:
  Antworten mit Zitat      
Servus
Ich habe an deinem Beispiel ausprobiert es hat funktioniert bei mir, habe Matlab Version R2015b, was hast du für eine?
Versuche es mit kleineren Schritten, also nicht alles in eine Zeile packen, dann kannst du in Debug stoppen und testen.

Code:

dom        = xmlread('test.xml')
waypoint = dom.item(0)
airway    = waypoint.getElementsByTagName('Airway').item(0)
airway.getTextContent()
 
Private Nachricht senden Benutzer-Profile anzeigen
 
marck3005
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2017, 15:59     Titel:
  Antworten mit Zitat      
Hey, erstmal vielen Dank für die Hilfe.
Ich arbeite mit Matlab 2017a.

Ich habe jetzt ebenfalls nochmal jeden Schritt einzel gemacht und bekomme den Fehler

Zitat:
Struct contents reference from a non-struct array object.


sobald ich
Code:
.getTextContent


anhänge.

Schon sehr merkwürdig.

Es wird als "DeferredElementImpl" in der Variable gespeichert.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.09.2017, 16:08     Titel:
  Antworten mit Zitat      
Versuche auf dem kleinem Beispiel, was du hier angehängt hast. Ob an dem funktioniert?
Mache eine DISP-Ausgabe bevor du an getTextContent() aufrufst.
Teste auf ISEMPTY
Versuch Runde klammern zu verwenden, ist ja eine Funktion, was du versuchst aufzurufen.
Private Nachricht senden Benutzer-Profile anzeigen
 
marck3005
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2017, 08:44     Titel:
  Antworten mit Zitat      
So ich habe es jetzt einfach mal mit einem Wegpunkt getestet und es funktioniert wunderbar.
Mein eigentlich Script scheint also zu funktionieren und es muss irgendwas an der XML Datei nicht ganz richtig zu sein.

Oder könnte es auch noch andere Gründe haben?

Vielen Dank schon mal für die freundliche Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
marck3005
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2017, 09:00     Titel:
  Antworten mit Zitat      
So ich habe die Lösung gefunden! Danke!!!!!!!!!!

Es liegt daran, dass manche "Waypoints" den entsprechenden Tag "Airway" überhaupt nicht besitzen. Dadurch kommt es dann zu einem Fehler, wenn ich versuche "getTextContent()" aufzurufen, da der Struct leer ist.

Dein Tipp mit "isempty()" war also Gold wert. Vielen Dank!

Meine Lösung dafür:
Code:
if ~isempty(waypoint(i+1).airway)
       waypoint(i+1).airway = waypoint(i+1).airway.getTextContent();
        end
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.