将元素的值复制到另一个元素中

时间:2016-10-10 22:00:45

标签: xml powershell

我试图了解如何在同一XML中将time_limit.txt的值转换为if [[ -r time_limit.txt ]]then; { echo "The command was NOT killed" } else { echo "The command was killed" }

<element1>value</element1>没有固定的位置,但如果存在,则需要填充<element16>value</element16>的值。

我必须使用PowerShell。谁能帮帮忙?

这就是我所拥有的:

<element16>

这导致

  

异常设置“#text”:“在此对象上找不到属性'#text'”

Snipplet XML:

<element1>

应该成为:

$latest = Get-ChildItem -Path $dir |
          Sort-Object LastAccessTime -Descending |
          Select-Object -First 1
$latest.Fullname

$attachment = $latest.Fullname

$xml = New-Object Xml
$xml.Load($latest.Fullname)

$xml.SelectSingleNode('/order/sf_st_mail').InnerText =
$xml.SelectSingleNode('/order/sf_re_mail').InnerText

$xml.Save($latest.Fullname)

1 个答案:

答案 0 :(得分:2)

加载XML:

$xml = New-Object Xml
$xml.Load($latest)

如果元素可以位于节点树中的任何位置,请使用XPath选择器:

$xml.SelectSingleNode('//sf_st_mail').InnerText =
     $xml.SelectSingleNode('//sf_re_mail').InnerText

如果您知道树结构,请直接访问它们:

$xml.order.sf_st_mail = $xml.order.sf_re_mail # for simple text values

用嵌套的子节点替换复杂节点:

$xml.someNode.parentNode.ReplaceChild($xml.anotherNode.Clone(), $xml.someNode)

然后保存:

$xml.Save($latest)