【问题标题】:Modify existing XML data with PowerShell使用 PowerShell 修改现有 XML 数据
【发布时间】:2018-04-04 07:18:24
【问题描述】:

样本数据:

<lieu>
  <l_nr>
  </l_nr>
  <strasse>gasse</strasse>
  <h_nr>0</h_nr>
  <f_name>0</f_name>
  <v_name>0</v_name>
  <txt>1 Knoflach Josef</txt>
</lieu>

我想更改“行号”项&lt;l_nr&gt;,将 1 添加到 6000。

并且还拆分&lt;txt&gt;项:

$path = "lieu.xml"
$fiche = New-Object System.XML.XMLDocument
[xml]$xml = Get-Content $path

$rue = $xml.lieu.txt[0].Split(" ")
$rue[0]
$rue[1]
$rue[2]

$xml | % {$_ -replace ($_.h_nr,$n_st[0],$_.f_name=$n_st[1],$_.v_name=$n_st[2])}
(1..$xml.lieu.txt.count) | % {$_ -replace $_.l_nr}

$xml.Save($path)

它抛出以下错误:

索引不可能 dans un tableau Null。 Au caractère Ligne:16 : 51 + ... $_ -替换 ($_.h_nr,$n_st[0],$_.f_name=$n_st[1],$_.v_name=$n_st[2])} + CategoryInfo : InvalidOperation : (:) [], RuntimeException + 完全限定错误 ID:NullArray

【问题讨论】:

  • 您能否编辑您的帖子并添加您为处理 xml 编写的代码。这将帮助我们找出问题所在。谢谢你:)
  • 如有疑问,请阅读documentation-replace 运算符并没有按照您的预期工作。

标签: xml powershell


【解决方案1】:

使用=设置值而不是-replace

[xml]$xml = Get-Content -Path C:\Users\dave\Temp\file.xml

$Split = $xml.lieu.txt -split "\s"

$xml.lieu.h_nr   = $Split[0]
$xml.lieu.f_name = $split[1]
$xml.lieu.v_name = $Split[2]

【讨论】:

  • 您好先生,谢谢您的回复,我知道了!您如何将 $split[0] 现在替换为项目“h_nr”?预测?
  • @arenas 你在循环什么?你能更新你的例子来展示你有什么和你想要什么吗?
  • 你好戴夫,我很抱歉你的想法不起作用:看 "$Split = $xml.lieu.txt[0].Split(" ") $Split[0] $split [1] $Split[2] "n rue" $xml.lieu.h_nr -replace $Split[0] $xml.lieu.f_name -replace $Split[1] $xml.lieu.v_name -replace $Split[2 ]"
  • 我已经更新了我的答案。它现在被"\s" 夹住了。你还在用-replace
  • 戴夫:是的:还要添加“-ToString()”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
相关资源
最近更新 更多