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

XML nach 2 Werten mit Matlab durchsuchen

 

Merlin123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2013, 09:02     Titel: XML nach 2 Werten mit Matlab durchsuchen
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem, ich bekomme ein vordefiniertes XML File.
Das heißt das Format wird immer das gleiche sein.

Aus diesem XML File soll ich ingesamt 3 Parameter suchen und jeweils die ID und den Wert rausschreiben.

Anbei der Aufbau des XML File.


Code:

      <Subnet Id="CE">
         <Device Id="28">
            <Service Id="A2">
               <Data Id="">
                  <Value Type="hex">00</Value>
               </Data>
            </Service>
            <Service Id="27">
               <Data Id="01">
                  <Value Type="hex">A4C1</Value>
               </Data>
            </Service>
 


Nun habe ich nicht soviel Ahnung vom XML.

Wie kann ich jeweils die passenden Knoten ansprechen?

Hier mein Matlab-Code:

Code:

%function c = read_xml(fn)
 
clear all;
clc;

% Den DOM-Baum auslesen
%dom = xmlread(fn);
dom = xmlread(XML_Name.xml');
% Alle PhysValue-Elemente ermitteln
elems = dom.getElementsByTagName('Dlc');
 
c = {};
 
%Alle gefundenen Elemente durchlaufen
for i = 0:elems.getLength-1
  % Den Wert des Values auslesen
   c{i+1, 2} = elems.item(i);%.getElementsByTagName('Data');%.item(0).getTextContent;
  % Die Einheit des Values auslesen
  c{i+1, 3} = char(elems.item(i));%.getAttribute('Value'));
end
 


mit dem Befehl
Code:

elems.item(i)
 


ließt Matlab mir alle Values aus, aber ich bekomme die ID nicht ausgelesen.

Kann mir jemand weiterhelfen?

Da das XML File kaum Überschriften hat und viele Knoten auf eine Ebene, ist es für mich umso schwerer.

Vielen Dank.


Merlin123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2013, 23:55     Titel:
  Antworten mit Zitat      
Hallo,

mittlerweile kann ich schon die Werte aus dem Bereich Value auslesen.

Code:

dom = xmlread(File.xml');
% Alle PhysValue-Elemente ermitteln
elems = dom.getElementsByTagName('Device');
 
c = {};



%Alle gefundenen Elemente durchlaufen
for i = 0:elems.getLength-1
  % Den Wert des Values auslesen
   c{i+1, 1} = char(elems.item(0).getElementsByTagName('Data').item(i).getTextContent);
  % Die Einheit des Values auslesen
 end
 


Nun meine Frage, wie kann ich die ID auslesen bei Data?

Würde das eventuell auch einfach über fopen und dann Zeilenweise einlesen?

Wenn ja wie müsste ich hier vorgehen?


Alternative:

Kann mit Matlab auch das XML in Excel öffnen.
Jedoch bekomme ich es nicht eingelesen oder als xls gespeichert.

Hätte hier jemand noch eine Idee?

Vielen Dank.
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2013, 23:57     Titel:
  Antworten mit Zitat      
Hallo Merlin123,

die einzig praktikable Möglichkeit unter Matlab xml-Dateien zu lesen ist mit xmlread.
Du erhälts ein Java-XML-Dom-Dokument. Für Dokumentation und Tutorials ist es
also sinnvoll, sich bei Java umzuschauen.

Was Du bei Deinem Code machst, ist nicht den Inhalt von Values sondern den
gesamten Inhalt von irgendwelchen data-Tags zu lesen. Des i in item(i) bezieht
sich nämlich auf device-Tags. Also alles ziemlich durcheinander.

Code:

dom = xmlread('File.xml');

% Alle Data-Elemente ueberall:
result = struct('value', {}, 'id', {});
elems = dom.getElementsByTagName('Data');

%Alle gefundenen Elemente durchlaufen
for i = 1:elems.getLength
  % Den Wert des Values auslesen
  result(i).value = char(elems.item(i).getElementsByTagName('Value').item(0).getTextContent);
  % Die Data-Id auslesen
  result(i).id = char(elems.item(i).getAttribute('Id'));
 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.