MATLAB - 编辑中的XML基础知识

时间:2015-05-11 10:10:58

标签: xml matlab edit

我有以下XML结构(简化版):

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="LMSDacSolutionReport.xsl" ?>
<LMS>
    <DurabilityTaskDefinition>
        <Material IdRef="Material_AlSi9Cu3" />
        <Tasks>
            <Task>
                <Material IdRef="AlSi9Cu3"> 
                            <Parameter Name="Temperature" Value="293.15"/>
                </Material>
            </Task>
        </Tasks>
    </DurabilityTaskDefinition>
    <Material>
        <Node>
            <Parameter Name="Temperature" Value="293.15"/>
            <Parameter Name="SigMeanHat" Value="0"/>
            <Parameter Name="R_Ratio" Value="-1"/>
        </Node>
    </Material>
</LMS>

我需要将参数温度的值更改为300(材料 - 节点 - 参数(&#39;温度&#39;)(第16行)。 问题是我之前有2次标记<Material>,每次运行代码时这个位置都会有所不同。我想告诉MATLAB使用属性更改参数的值:名称&#39;温度&#39;,仅当材料标签位于<LMS>之后的第二级,或者材料标签位于标签的结尾:&#39; DurabilityTaskDefinition&#39; 。 到目前为止,我确信如何打开和阅读文件:

xDoc = xmlread('C:\TEST\Durability Strain Life Analysis Solution.12.xml');
allListItems=xDoc.getElementsByTagName('Material');
Material=allListItems.item(2);
...
xmlwrite('test2.xml',xDoc);

1 个答案:

答案 0 :(得分:2)

根据评论,这是我的工作代码:

% Import the XPath classes
import javax.xml.xpath.*

% Construct the DOM.
doc = xmlread('C:\TEST\Durability Strain Life Analysis Solution.12.xml');

factory = javax.xml.xpath.XPathFactory.newInstance();
xpath = factory.newXPath();
expr = xpath.compile('/LMS/Material/Node/Parameter[@Name="Temperature"]');
result = expr.evaluate(doc, XPathConstants.NODESET);
result = result.item(0);
result.setAttribute('Value','363696369')

xmlwrite('Final.xml',doc);

有人会建议改进吗?