我正在尝试更新XML节点,虽然它不会生成错误,但它不会更新值。
xml
<ParameterValues>
<ParameterValue>
<Name>TO</Name>
<Value>test@test.com.au</Value>
</ParameterValue>
<ParameterValue>
<Name>IncludeReport</Name>
<Value>True</Value>
</ParameterValue>
<ParameterValue>
<Name>RenderFormat</Name>
<Value>MHTML</Value>
</ParameterValue>
<ParameterValue>
<Name>Subject</Name>
<Value>@ReportName was executed at @ExecutionTime</Value>
</ParameterValue>
<ParameterValue>
<Name>IncludeLink</Name>
<Value>True</Value>
</ParameterValue>
<ParameterValue>
<Name>Priority</Name>
<Value>NORMAL</Value>
</ParameterValue>
</ParameterValues>
更新字符串。
(这是我要改变的 - <Value>test@test.com.au</Value>
)
设置@ input.modify(&#39;将(/ ParameterValues / ParameterValue / Name / Value / text())[1]的值替换为&#34; D.1234@EEEER.COM.AU" &#39)
如果我更改字符串以更新名称节点,则更新为&#34; D.1234@EEEER.COM.AU"?
1。<Name>TO</Name>
设置@ input.modify(&#39;将(/ ParameterValues / ParameterValue / Name / text())[1]的值替换为&#34; D.1234@EEEER.COM.AU"&# 39)
示例结果
<ParameterValues>
<ParameterValue>
<Name>D.1234@EEEER.COM.AU</Name>
<Value>d.brown@orrcon.com.au</Value>
</ParameterValue>
答案 0 :(得分:1)
你想要的只是更新...试试这个
$doc = new DOMDocument();
$doc->load( xml file name );
$doc->formatOutput = true;
$doc->getElementsByTagName("Value")->item(0)->nodeValue = $TheNewValue;
$doc->save("pathwheroverwritethefile");
我希望我能帮忙......我认为项目上的数组值是错误......
答案 1 :(得分:0)
您的更新语句中指定了额外的Name
节点。
请尝试使用此替换第一个ParameterValue
节点的值。
replace value of (/ParameterValues/ParameterValue/Value/text())[1]
with "D.1234@EEEER.COM.AU"
如果您想确保只替换ParameterValue
Name
TO
ParameterValue
的{{1}}值,则应在replace value of (/ParameterValues/ParameterValue[Name = "TO"]/Value/text())[1]
with "D.1234@EEEER.COM.AU"')
节点上使用谓词。
{{1}}