#xml #tsql
#xml #tsql
Вопрос:
Я пытаюсь обновить 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(‘замените значение (/ParameterValues/Параметрическое значение/Name/Value/ text())[1] на «D.1234@EEEER.COM.AU «‘)
Если я изменю строку для обновления имени узла, она обновится с помощью «D.1234@EEEER.COM.AU «?
1. <Name>TO</Name>
установить @input.modify(‘заменить значение (/ParameterValues/Параметрическое значение/Name/ text())[1] на «D.1234@EEEER.COM.AU «‘)
Пример результата
<ParameterValues>
<ParameterValue>
<Name>D.1234@EEEER.COM.AU</Name>
<Value>d.brown@orrcon.com.au</Value>
</ParameterValue>
Комментарии:
1. Что именно вы пробовали? На каком языке или инструменте
set
выполняется?2. Извините, забыл упомянуть, где я это делал. TSQL. Что я пробовал, так это:- установить @input.modify(‘заменить значение (/ParameterValues/Параметрическое значение/Name/Value/ text())[1] на «D.1234@EEEER.COM.AU «‘)
3. Пожалуйста, добавьте
TSQL
в свой вопрос теги, чтобы эксперты в этой области могли вам помочь. xP
Ответ №1:
все, что вы хотите, сэр, это обновить … попробуйте использовать это
$doc = new DOMDocument();
$doc->load( xml file name );
$doc->formatOutput = true;
$doc->getElementsByTagName("Value")->item(0)->nodeValue = $TheNewValue;
$doc->save("pathwheroverwritethefile");
хотел бы я помочь …. я думаю, что значение массива в item является ошибкой…
Ответ №2:
У вас есть дополнительный Name
узел, указанный в вашем заявлении об обновлении.
Попробуйте вместо этого заменить значение первого ParameterValue
узла следующим образом.
replace value of (/ParameterValues/ParameterValue/Value/text())[1]
with "D.1234@EEEER.COM.AU"
Если вы хотите убедиться, что вы заменяете только значение ParameterValue
where Name
is TO
, вам следует использовать предикат для ParameterValue
узла.
replace value of (/ParameterValues/ParameterValue[Name = "TO"]/Value/text())[1]
with "D.1234@EEEER.COM.AU"')
Комментарии:
1. Спасибо. Я новичок, это было просто, но я не мог видеть деревья для форреста.