我想读取一个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>
答案 0 :(得分:1)
在您的示例中,您永远不会读取该文件。
但是对于XML,如果使用java XML工具,可以省去很多麻烦。你可以直接从Matlab打电话给他们。
答案 1 :(得分:1)
如找到here,不可以打开文件,搜索位置,在那里添加内容,同时保留文本的其余部分,然后关闭。
您只需重写整个文件即可解决此问题:
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');
如果这是真的一次性问题,那么上面的黑客就可以了。但是,正如@bdecaf所建议的那样,你应该使用适当的工具来完成工作。我建议完全在MATLAB之外进行编写(以避免过于复杂的代码),并通过MATLAB的系统调用语法(类型help !
)调用外部工具/库。