【问题标题】:XML Replace node valueXML 替换节点值
【发布时间】:2014-08-27 10:53:21
【问题描述】:

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

更新字符串。

  1. (这是我想要改变的 - &lt;Value&gt;test@test.com.au&lt;/Value&gt;

    set @input.modify('将 (/ParameterValues/ParameterValue/Name/Value/text())[1] 的值替换为 "D.1234@EEEER.COM.AU"')

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

1.&lt;Name&gt;TO&lt;/Name&gt;

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>

【问题讨论】:

  • 你到底尝试了什么? set 是用什么语言或工具执行的?
  • 抱歉,我忘了说我在哪里做的。 TSQL。我试过的是:- set @input.modify('replace value of (/ParameterValues/ParameterValue/Name/Value/text())[1] with "D.1234@EEEER.COM.AU"')跨度>
  • 请将TSQL 添加到您的问题标签中,以便该领域的专家可以帮助您。 xP

标签: xml tsql


【解决方案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 节点。

    尝试使用此方法替换第一个 ParameterValuenode 的值。

    replace value of (/ParameterValues/ParameterValue/Value/text())[1] 
                        with "D.1234@EEEER.COM.AU"
    

    如果您想确保只替换ParameterValue 的值,其中NameTO,您应该在ParameterValue 节点上使用谓词。

    replace value of (/ParameterValues/ParameterValue[Name = "TO"]/Value/text())[1] 
                        with "D.1234@EEEER.COM.AU"')
    

    【讨论】:

    • 谢谢。我新它很简单,但看不到阿甘的树木。
    猜你喜欢
    • 2018-03-05
    • 2013-07-11
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多