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

Matlab XML parsen die 1000 Frage wahrscheinlich !

 

Str1k3r2k4
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2016, 23:51     Titel: Matlab XML parsen die 1000 Frage wahrscheinlich !
  Antworten mit Zitat      
Moin Moin,

ich habe ein kleines Problem mit dem parsen oder dem durchlaufen einer XML Datei in Matlab.

Ich habe eine Link der auf eine XML datei im Internet verweist!
Dor bekomme ich folgende Struktur im Browser angezeigt:

<eveapi version="2">
<currentTime>2016-05-09 22:06:43</currentTime>
-<result>
-<rowset name="characters" key="characterID" columns="name,characterID,corporationName,corporationID,allianceID,allianceName,factionID,factionName">
<row name="Peter" characterID="90099" corporationName="dadad" corporationID="xxx" allianceID="dadddd" allianceName="ssssssdsa" factionID="0" factionName=""/>
<row name="Hannes" characterID="90768" corporationName="fasfasf" corporationID="xxx" allianceID="dadddd" allianceName="ssssssdsa" factionID="0" factionName=""/>
<row name="Perry" characterID="15571" corporationName="gdsgsdg" corporationID="xxx" allianceID="dadddd" allianceName="ssssssdsa" factionID="0" factionName=""/>
</rowset>
</result>
<cachedUntil>2016-05-09 23:00:37</cachedUntil>
</eveapi>

Diese Struktur wird sich auf in Zukunft wiederholen.
Wie kann ich einzelne Einträge auf Variablen zuweisen bzw. aus der Xml rausfiltern?

Ich komme nicht mit dem internem Hilfeprogramm so richtig an mein Ziel !

Einige Beispiele aus dem Forum lassen mich die Knoten ausgeben aber nicht bestimmte Inhalte !

Die Vorstellung geht in die Richtung der Auflistung von zbsp: "name" = Peter usw.

Vielen Dank schon einmal vorab !

MfG
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 10.05.2016, 04:47     Titel:
  Antworten mit Zitat      
Was hast du bisher probiert, was klappt nicht? Bitte kompilierbares mminimalbeispielund ganze Fehlermeldung posten.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Str1k3r2k4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2016, 09:59     Titel:
  Antworten mit Zitat      
Moin Moin,

ich habe einige Themen im Forum durchgelesen und habe folgenden Eintrag zum Parsen verwendet :

http://www.gomatlab.de/xml-und-dom-.....-mehr-details-t10773.html

Hier bekomme ich schon einmal angegeben das sich Knoten usw. in der XML befinden.

Ich habe mal ein Minimalbeispiel erstellt mit einer anderen Abfrage einer öffentlich zugänglichen XML.

Hier noch ein Link vom Entwickler der die XML via API bereitstellt:

https://eveonline-third-party-docum.....xmlapi/map/map_kills.html

Code:


url = 'https://api.eveonline.com/map/kills.xml.aspx';



%  wenn du eingelesen hast
%  dann steht der Zeiger am Dokument Anfang
%  
xDoc = xmlread(url);
%
% zu root gelangst du mit (erster Tag):
 root = xDoc.getDocumentElement

% TIP AM RANDE:
%  mit methodsview kannst, du alle Methoden anschauen
% die an dieser Ebene zu Verfügung stehen
% methodsview(xDoc)
%
% Anzahl Elemente
num_el =root.getLength()

% so kannst zugreifen auf diesen Elemente
% da es java ist, fängt der Zähler von 0 an
for k = 0:num_el-1
node = root.item(k);
 if node.getNodeType == node.ELEMENT_NODE
  fprintf('%d Knoten heisst %s \n',k, char(node.getTagName))
 end

end

% wenn du nur bestimmte Tag Elemente möchtest:
% dann mit getElementsByTagName kann du diese raussuchen
allListItems = root.getElementsByTagName('30004995');

 


Meine frage würde nun in sein wie ich einzelne Zeilen nach Werte auslese und diese in Variablen wiedergeben kann.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Str1k3r2k4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2016, 15:18     Titel:
  Antworten mit Zitat      
Ich habe das Problem gelöst.

Dazu habe ich eine Datenwerweiterung "xml2struct" installiert welche unter folgendem Link geladen werden kann:

http://www.mathworks.com/matlabcent.....ruct/content/xml2struct.m

Dann habe ich die XML geladen und nun kann ich die Attribute auch gezielt abfragen.

Hier ein Minimalbeispiel :

Code:

clear all


url = 'https://api.eveonline.com/map/kills.xml.aspx';


str = xmlread(url);




a = xml2struct(str);
num = length(a.eveapi.result.rowset.row)

for k = 1:num
     fprintf( [ ' SystemID: ' a.eveapi.result.rowset.row{k}.Attributes.solarSystemID ' \n'])

end

 


vielen Dank für die Zeit.
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 - 2024 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.