2

XMLファイルを読み取り、いくつかの文字列を変更し、保存してから、MATLABでファイルを閉じたいと思います。これまでのところ:

f = fopen( 'output_results\results.xml', 'w' ); 

ファイルのノード内に次の行を追加する必要がありoptListます(以下を参照)。

<opt name="*_option1">true</opt>
<opt name="format">
    <f1>file:/C:/working/types.h</f1>
</opt>

ファイルを保存して閉じます

fclose(f); 

上記の行をXMLファイルに追加するにはどうすればよいですか?

ファイルの内容:

<?xml version="1.0" encoding="utf-8"?> 
<Custom_project name="" val="True" name="file1" path="file:/C:/Users/Local/Temp/info.xml" version="1.0">
<verif="true" name="values" path="file:/C:/Users/Temp/folder1">
    <optList name="values">
        <opt name="color">red</opt>
        <opt name="police">calibri</opt>
        <opt name="font">blue</opt>
    </optList>
</verif>
<toto="myvalue" name="option1">
    <opt name="myvalue_1">32</opt>
    <opt name="-total">All</opt> 
    <opt name="characteristic">hybrid</opt>
</toto> 
4

2 に答える 2

1

あなたの例では、ファイルを読むことはありません。

しかし、XMLの場合、Java XMLツールを使用すると、多くの問題を回避できます。Matlabから直接呼び出します。

于 2012-08-16T09:23:46.803 に答える
1

ここあるように、ファイルを開いて場所を探し、そこにコンテンツを追加し、残りのテキストを保持して閉じることはできません。

ファイル全体を書き直すだけで、これを回避できます。

f = fopen( 'output_results\results.xml', 'r' ); 
g = fopen( 'output_results\results.xml.TEMP', 'w' ); 

while ~feof(f)
    line = fgets(f);
    fprintf(g, '%s', line);
    if strcmpi(line, '<optList name="values">')
        fprintf(g, '%s\n%s\n%s\n%s\n',....
            '<opt name="*_option1">true</option>',...
            '<opt name="format">',...
            '<f1>file:/C:/working/types.h',...
            '</f1></option>');
    end
end

fclose(f), fclose(g);
movefile('output_results\results.xml.TEMP', 'output_results\results.xml');

これが本当に1回限りの問題である場合は、上記のハックで問題ありません。ただし、@ bdecafで提案されているように、ジョブには適切なツールを使用する必要があります。(過度に複雑なコードを避けるために)完全にMATLABの外部で記述を行い、MATLABのシステムコール構文(type)を介して外部ツール/ライブラリを呼び出すことをお勧めしますhelp !

于 2012-08-16T09:51:55.247 に答える