Musterlösung MatrixInXML

xmlOmat.m
function result = xmlOmat(matrix, filename)

% XMLOmat(matrix, filename) erzeugt aus einer gegebenen Matrix und einem Dateinamen
% eine XML-Datei, in der die Komponenten der Matrix zusammen mit Ihrer Position
% in der Matrix gespeichert sind. Der Dateiname muss ein Pfad sein.

% Datei öffnen und gegebenenfalls erzeugen
% fileID ist die MatLab interne Identifikationsnummer für die Datei
fileID = fopen(filename, 'w');

% Prolog in die Datei schreiben
fprintf(fileID, '<?xml version= "1.0" encoding="UTF-8"?> ')

% Dokumentinstanz erstellen

% Groesse der Matrix bestimmen
[zeilen, spalten] = size(matrix);

% Oeffnungstag des Wurzelelements erzeugen
fprintf(fileID,'<Matrix> ');

% Matrixelemente auslesen
for ii = 1:zeilen,
   for jj = 1:spalten,
      fprintf(fileID,' <Element> ');
      fprintf(fileID,[' <Zeile > ' num2str(ii) ' </Zeile > ']);
      fprintf(fileID,[' <Spalte> ' num2str(jj) ' </Spalte> ']);
      fprintf(fileID,[' <Wert  > ' num2str(matrix(ii,jj)) ' </Wert> ']);
      fprintf(fileID,' </Element> ');
   end
end

% Wurzelelement schliessen
fprintf(fileID,'</Matrix> ');


% Datei schliessen
fclose(fileID);

 

Der Aufruf in Matlab kann dann so aussehen: 

>> A = magic(3);
>> xmlOmat(A,'testxml.xml');

und dann können Sie die Datei testxml.xml mit Notepad++ öffnen und sehen die erzeugte Struktur:

 

<?xml version= "1.0" encoding="UTF-8"?>

 

<Matrix>

<Element>
<Zeile >        1    </Zeile >
<Spalte>       1    </Spalte>
<Wert  >       8    </Wert>
</Element>

<Element>
<Zeile >        1    </Zeile >
<Spalte>       2    </Spalte>
<Wert  >       1    </Wert>
</Element>

<Element>
<Zeile >        1    </Zeile >
<Spalte>       3    </Spalte>
<Wert  >       6    </Wert>
</Element>

<Element>
<Zeile >        2    </Zeile >
<Spalte>       1    </Spalte>
<Wert  >       3    </Wert>
</Element>

<Element>
<Zeile >        2    </Zeile >
<Spalte>       2    </Spalte>
<Wert  >       5    </Wert>
</Element>

<Element>
<Zeile >        2    </Zeile >
<Spalte>       3    </Spalte>
<Wert  >       7    </Wert>
</Element>

<Element>
<Zeile >        3    </Zeile >
<Spalte>       1    </Spalte>
<Wert  >       4    </Wert>
</Element>

<Element>
<Zeile >        3    </Zeile >
<Spalte>       2    </Spalte>
<Wert  >       9    </Wert>
</Element>

<Element>
<Zeile >        3    </Zeile >
<Spalte>       3    </Spalte>
<Wert  >       2    </Wert>
</Element>

</Matrix>