在 powershell 中转义冒号
Escaping a colon in powershell
我在 powershell 中有以下代码试图读回一段 xml。
$path = "C:\path29006775491.xml"
$xml = [xml](Get-Content $path)
$xml.ern:NewReleaseMessage
问题出在冒号 (:) 上,我尝试用 ' 将其转义,但它似乎不起作用。还尝试将其放入 {}
如果我编辑 xml 文件本身中的冒号并相应地更改代码,它会很好地读回,但不幸的是,这不是一个选项。非常感谢任何帮助。
为了让 .NET 理解名称空间前缀,您需要一个名称空间管理器对象:
$path = "C:\path29006775491.xml"
$xml = [xml](Get-Content $path)
$XmlNSManager = New-Object System.Xml.XmlNamespaceManager -ArgumentList $xml.NameTable
$XmlNSManager.AddNamespace('ern','http://ddex.net/xml/ern/341')
$XmlNSManager.AddNamespace('xsi','http://www.w3.org/2001/XMLSchema-instance')
# Now you can use SelectNodes() with your namespace manager:
# If NewReleaseMessage is the root node
$xml.SelectNodes('/ern:NewReleaseMessage',$XmlNSManager)
# If NewReleaseMessage is a descendant of the root node
$xml.SelectNodes('//ern:NewReleaseMessage',$XmlNSManager)
我在 powershell 中有以下代码试图读回一段 xml。
$path = "C:\path29006775491.xml"
$xml = [xml](Get-Content $path)
$xml.ern:NewReleaseMessage
问题出在冒号 (:) 上,我尝试用 ' 将其转义,但它似乎不起作用。还尝试将其放入 {} 如果我编辑 xml 文件本身中的冒号并相应地更改代码,它会很好地读回,但不幸的是,这不是一个选项。非常感谢任何帮助。
为了让 .NET 理解名称空间前缀,您需要一个名称空间管理器对象:
$path = "C:\path29006775491.xml"
$xml = [xml](Get-Content $path)
$XmlNSManager = New-Object System.Xml.XmlNamespaceManager -ArgumentList $xml.NameTable
$XmlNSManager.AddNamespace('ern','http://ddex.net/xml/ern/341')
$XmlNSManager.AddNamespace('xsi','http://www.w3.org/2001/XMLSchema-instance')
# Now you can use SelectNodes() with your namespace manager:
# If NewReleaseMessage is the root node
$xml.SelectNodes('/ern:NewReleaseMessage',$XmlNSManager)
# If NewReleaseMessage is a descendant of the root node
$xml.SelectNodes('//ern:NewReleaseMessage',$XmlNSManager)