File Exchange

image thumbnail

XML4MAT v2.0

version 1.0.0.0 (235 KB) by Jonas Almeida
Converts XML to and from MATLAB structured variables.

4 Downloads

Updated 16 Nov 2004

No License

Inter-conversion between MATLAB structured variables and XML strings. A markup language was defined to support string representation of any MATLAB variable. Additional m-functions support import of any XML structure. The final picture: any XML --> MbML <--> MATLAB.

Manuscript describing original (v1.0) of tbox was published at:

Almeida, J.S., Wu, S., and Voit, E.O. (2003) XML4MAT: Inter-conversion between MatlabTM structured variables and the markup language MbML. Computer Science Preprint Archive (Elsevier), 2003(12):9-17.

Cite As

Jonas Almeida (2021). XML4MAT v2.0 (https://www.mathworks.com/matlabcentral/fileexchange/6268-xml4mat-v2-0), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (9)

Eric Nunes

This software is great.
I have a tree class defined in matlab with two variable nodes and parent. I want to convert it into an xml file. Do I just give the object of the class as input to the mat2xml function. And what is VARNAME?

Sebastian Holmqvist

Awesome piece of software!

My only gripe is the GNU license part. If only it was released under the BSD license it could be more widely used.

Mirko

Hi, I've some problem with a file like this: any Suggestions?
The result struct is not the same as the one I expected. Ok for duplication of fields/substruct when I've the same tag (<value> in this case). But something missing, i.e. sourcefileselectedcodes is not stored in result struct.

<?xml version="1.0" ?>
<!--
Put here comments
-->

<runselectiondisplayinfo>
<sourcefilenameselected>
<typeCode>7</typeCode>
<numberOfElements>6</numberOfElements>
<value>psa_blacksea_NA__mld_2002_05.nc</value>
<value>psa_blacksea_NA__mld_2002_06.nc</value>
<value>psa_blacksea_NA__mld_2002_07.nc</value>
<value>psa_blacksea_NA__mld_2003_05.nc</value>
<value>psa_blacksea_NA__mld_2003_06.nc</value>
<value>psa_blacksea_NA__mld_2003_07.nc</value>
</sourcefilenameselected>
<sourcefileselectedcodes>
<typeCode>7</typeCode>
<numberOfElements>6</numberOfElements>
<value>184</value>
<value>172</value>
<value>173</value>
<value>174</value>
<value>185</value>
<value>186</value>
</sourcefileselectedcodes>
<roicodesselected>
<typeCode>7</typeCode>
<numberOfElements>1</numberOfElements>
<value>blacksea</value>
</roicodesselected>
<yearcodesselected>
<typeCode>7</typeCode>
<numberOfElements>2</numberOfElements>
<value>2002</value>
<value>2003</value>
</yearcodesselected>
<resolutioncodesselected>
<typeCode>7</typeCode>
<numberOfElements>4</numberOfElements>
<value>20x20</value>
<value>2x2</value>
<value>5x5</value>
<value>N/A</value>
</resolutioncodesselected>
<monthcodesselected>
<typeCode>7</typeCode>
<numberOfElements>3</numberOfElements>
<value>05</value>
<value>06</value>
<value>07</value>
</monthcodesselected>
<runcodeselected>
<typeCode>2</typeCode>
<value>1</value>
</runcodeselected>
<removesourcefilesflag>
<typeCode>1</typeCode>
<value>0</value>
</removesourcefilesflag>
<allsourcefilesflag>
<typeCode>1</typeCode>
<value>1</value>
</allsourcefilesflag>
<allroiflag>
<typeCode>1</typeCode>
<value>0</value>
</allroiflag>
<allresolutionflag>
<typeCode>1</typeCode>
<value>0</value>
</allresolutionflag>
<allyearflag>
<typeCode>1</typeCode>
<value>0</value>
</allyearflag>
<allmonthflag>
<typeCode>1</typeCode>
<value>0</value>
</allmonthflag>
<classname>
<typeCode>7</typeCode>
<value>RUNSELECTIONDISPLAYINFO</value>
</classname>
</runselectiondisplayinfo>

Thank you.

Charles Garfinkle

Also, opening a matlabpool and having some of the for loops in xml2mat.m done in parallel (parfor) results in a significant increase in speed for large trees.

Charles Garfinkle

Fantastic. The only edit I needed to make was to have mbmling.m also remove horizontal tabs between elements by adding the following between lines 25 and 26:

xml=strrep(xml,sprintf(['>',char(9)]),'>');

Otherwise, the presence of tabs between elements of the XML file caused xml2struct.m to throw an error and xml2cell.m to create cells containing structures that combine child elements with the parent element's last attribute (rather than creating separate cells for each child and parent attribute).

Charles Garfinkle

Sorry, between lines 25 and 26, not 26 and 27.

Kevin

Very nice job. Impressive, elegant design. Love the open source too.

One thing I had to do right away was add a large precision to the num2str function in mat2xml. I was dealing with large values and needed the precision to remain. Line 35:
XML=[XML,num2str(MAT(:)',100)];

Jaakko R

Just works for me.

lyhwus lywhus

Very good sofware and is open source

MATLAB Release Compatibility
Created with R14
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!