XML替换节点值

XML替换节点值,xml,tsql,Xml,Tsql,我正在尝试更新XML节点,虽然它不会生成错误,但不会更新值 xml <ParameterValues> <ParameterValue> <Name>TO</Name> <Value>test@test.com.au</Value> </ParameterValue> <ParameterValue> <Name>IncludeReport<

我正在尝试更新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>

到
test@test.com.au
包括报告
真的
渲染格式
MHTML
主题
@ReportName在@ExecutionTime执行
IncludeLink
真的
优先
正常的
更新字符串

  • (这就是我想要改变的-
    test@test.com.au

    set@input.modify((/ParameterValues/ParameterValue/Name/value/text())[1]的值替换为“D”。1234@EEEER.COM.AU“')

  • 如果我更改字符串以更新名称节点,它将更新为“D”。1234@EEEER.COM.AU“

    1.

    set@input.modify((/ParameterValues/ParameterValue/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>
    
    
    D1234@EEEER.COM.AU
    Dbrown@orrcon.com.au
    
    先生,您只需要更新。。。试试这个

    $doc = new DOMDocument();
    $doc->load( xml file name );
    
    $doc->formatOutput = true;
    $doc->getElementsByTagName("Value")->item(0)->nodeValue = $TheNewValue; 
    $doc->save("pathwheroverwritethefile");
    

    我希望我能帮助。。。。我认为项上的数组值是错误的…

    在update语句中指定了一个额外的
    名称
    节点

    请尝试替换第一个
    ParameterValue
    节点的值

    替换(/ParameterValues/ParameterValue/value/text())[1]的值
    用“D”。1234@EEEER.COM.AU"
    
    如果要确保只将
    ParameterValue
    的值替换为
    Name
    中的
    to
    ,则应在
    ParameterValue
    节点上使用谓词

    替换(/ParameterValues/ParameterValue[Name=“TO”]/value/text())[1]的值
    用“D”。1234@EEEER.COM.AU"')
    
    您到底尝试了什么?执行
    set
    的语言或工具是什么?很抱歉,忘了提到我在哪里执行此操作。TSQL。我尝试的是:-set@input.modify('replace value of(/ParameterValues/ParameterValue/Name/value/text())[1]为“D”。1234@EEEER.COM.AU“')请将
    TSQL
    添加到您的问题标签中,以便该领域的专家可以为您提供帮助。谢谢。我知道这很简单,但看不见森林。