我有一个字符串,其中有一个XML格式的部分。如何使用PowerShell获取该部分?以下是我到目前为止所尝试的内容,但它无效。任何帮助将不胜感激。
$text = "2015-07-09 16:19:12,900|INFO Execute
2015-07-09 16:19:12,978|INFO Stop
2015-07-09 16:19:12,978|INFO Start
?<config>
<name>shsjsjsjsl</name>
<id>0</id>
<status>Passed</status>
</config>
2015-07-09 16:19:13,461|INFO End"
$xmlData = $text -match "\?<config>(.*?)</config>"
$xmlData
答案 0 :(得分:0)
您应该在<config>
变量中包含$xmlData
标记,因为XML文档必须只有一个根。由于XML部分跨越多行,因此您必须使正则表达式包含换行符,例如使用单行修饰符((?s)
):
if ($text -match '(?s)<config>.*?</config>') {
$xmlData = $matches[0]
}
或匹配所有空格(\s
)和非空格(\S
):
if ($text -match '<config>[\s\S]*?</config>') {
$xmlData = $matches[0]
}