Powershell:使用标记名称查找并替换xml中的标记值以创建样本数据

时间:2013-09-17 14:29:27

标签: xml powershell

我需要使用标记名称加上增量值来查找和替换xml文档中的多个标记值。我拥有的测试数据每个字符串都有一个常量值,我想用它周围的标签名称替换它,然后加上一个递增的值

例如)

<CREATE_DT>str1234</CREATE_DT>
<SOLD_TO>str1234</SOLD_TO>
<SHIP_TO>str1234</SHIP_TO>

<CREATE_DT>CREATE_DT_tag_1</CREATE_DT>
<SOLD_TO>SOLD_TO_tag_2</SOLD_TO>
<SHIP_TO>SHIP_TO_tag_3</SHIP_TO>

我认为这可以作为文本操作或xml解析器来完成。 THX

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

$str = [xml]@"
<DOC>
  <CREATE_DT>str1234</CREATE_DT>
  <SOLD_TO>str1234</SOLD_TO>
  <SHIP_TO>str1234</SHIP_TO>
</DOC>
"@

$i = 1
$str.DOC | Select-Xml -XPath '*' | 
    Foreach {$_.Node.InnerText = $_.Node.LocalName + "_$(($i++))"}

注意:除了更新值之外,还需要$ i ++附近的额外parens才能让PowerShell发出$ i的值。