使用Matlab(或任何其他软件)将ascii .dat文件转换为.xml

时间:2012-10-04 14:08:55

标签: matlab

我有一组扩展名为.dat的ascii文件,我需要将它们转换为一组.xml文件。

无论如何,使用Matlab或任何其他软件都可以做到这一点。

这是我需要转换的文件之一:

https://docs.google.com/open?id=0B1GI9KuZUKX3TDFCZDVTbzdINUE

2 个答案:

答案 0 :(得分:1)

我过去曾使用XML4MAT。它将处理XML格式的数据转换,但不能完全处理实际读取和写入XML文件,因此您必须添加一些胶水代码。顺序是:

  1. 在MATLAB中将dat文件读入一个变量(这里我使用变量名称Data)。看起来你的文件基本上是一个数字表,所以很容易。
  2. 使用DumpToXML.m和LoadFromXML.m作为您单独下载的XML4MAT包的粘合代码。

    % function DumpToXML(XMLFileName, Data)
    function DumpToXML(XMLFileName, Data)
    
        % Generate the text of the XML file.
        XMLData = ['<root>' 10];
        XMLData = [XMLData mat2xml(Data, 'Data', 1)];
        XMLData = [XMLData '</root>' 0];
    
        % Now output the data.
        fid = fopen(XMLFileName, 'w');
        fprintf(fid, '%s', XMLData);
        fclose(fid);
    end
    
    
    % function LoadFromXML(XMLFileName)
    function Data = LoadFromXML(XMLFileName)
    
        % Open the XML file.
        fid = fopen(XMLFileName, 'r');
        if(fid <= 0)
            error(['Cannot open XML file ' XMLFileName]);
        end
        XMLData = fscanf(fid, '%c', inf);
        fclose(fid);
    
        % Now get the Data tag.
        DataStartIndex = findstr(XMLData, '<Data');
        % Now find the end.
        DataEndIndex = findstr(XMLData, '</Data>');
    
        % Extract the strings for this two variable from the string
        % containing the loaded XML file.
        XMLData = XMLData(DataStartIndex:DataEndIndex+6);
    
        % And turn it back into a variable.
        Data = xml2mat(XMLData);
    end
    

答案 1 :(得分:0)

我认为Matlab不是那种选择的武器。

我支持Python,因为有很好的XML包,比如lxml。您应该能够使用open()和readlines()轻松解析dat文件。