我有这段PowerShell代码,可以正常工作。
$xml = [xml](gc '.\test.xml')
$ns = New-Object Xml.XmlNamespaceManager $xml.NameTable
$ns.AddNamespace("ns", "randomnamespace")
$nodes = $xml.SelectNodes("//ns:tag", $ns)
# print all nodes
foreach ($node in $nodes) {
Write-Host $node.anotherTag " - " $node.anotherTag.Substring(0,7)
}
我想将其放在一行以用作PowerShell命令,因为我无法更改执行策略。
我尝试了以下操作:
$xml = [xml](gc '.\test.xml') | $ns = New-Object Xml.XmlNamespaceManager $_.NameTable | $ns.AddNamespace('ns', 'tag') | $xml.selectNodes('//ns:anotherTag', $ns) | foreach {Write-Host $_.anotherTag' - ' $_.anotherTag(0,7)}"
但是我收到错误消息
只允许将表达式用作管道... NameTable中的第一个元素$ ns.AddNamespace('ns',..)
并且在读取XML文件之前我无法声明名称空间。
有什么办法可以使它正常工作吗?
答案 0 :(得分:0)
请勿使用管道|
,而应使用分号;