File Exchange

image thumbnail

XML4MAT v2.0

version 1.0 (235 KB) by

Converts XML to and from MATLAB structured variables.

8 Downloads

Updated

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.

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?

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

Mirko (view profile)

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.

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.

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).

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

Kevin

Kevin (view profile)

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
MATLAB 7 (R14)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video