Musterlösung MatrixInXML
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>