如何在文本文件中获取XML部分?

时间:2015-07-13 16:49:02

标签: regex xml string powershell

我有一个字符串,其中有一个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

1 个答案:

答案 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]
}