【问题标题】:Get values from a text file with XML nodes in Powershell在 Powershell 中从带有 XML 节点的文本文件中获取值
【发布时间】:2016-12-22 06:01:45
【问题描述】:

我在按照 powershell 中的标准从 .txt 文件中获取值时遇到了一些困难。

我的 .txt 文件有这样的结构:

<arquivo>teste.exe</arquivo>   <caminhoArquivo>C:/teste</caminhoArquivo>
<arquivo>carro.zip</arquivo>   <caminhoArquivo>C:/sistema/res</caminhoArquivo>
<arquivo>logs.txt</arquivo>   <caminhoArquivo>C:/log</caminhoArquivo>
<arquivo>servicos.txt</arquivo>   <caminhoArquivo>C:/sistema/res</caminhoArquivo>
<arquivo>modelos.jpg</arquivo>   <caminhoArquivo>C:/sistema/modelos</caminhoArquivo>
<arquivo>binarios.zip</arquivo>   <caminhoArquivo>C:/nova pasta</caminhoArquivo>
<arquivo>config.lua</arquivo>   <caminhoArquivo>C:/server</caminhoArquivo>

我想获得&lt;arquivo&gt;&lt;/arquivo&gt; 之间的值,例如“teste.exe”,以及它在&lt;caminhoArquivo&gt;&lt;/caminhoArquivo&gt; 之间的值,例如"C:/teste" 对于文本文件的每一行都带有 foreach,但我无法做到这一点。我已经用正则表达式尝试过,但没有成功。可以帮助PowerShell中的新手解决这个问题吗?

谢谢! :D

【问题讨论】:

  • 函数 restaurarLixeira { $example = " dasdasdasd " $pattern = "(?)\w+?(?=.*)" $result = [Regex]::Match($example, $pattern) $result.Value 写入主机 $result.Value.ToString() }

标签: regex xml string file powershell


【解决方案1】:

由于这些行似乎是 XML 节点,您可以尝试如下方式,将它们包装在 root 节点中,然后将它们转换为 XML

Get-Content $pathToYourFile | 
  % {
    $root = [xml]("<root>$_</root>")
    @{
        arquivo = $root.root.arquivo
        caminhoArquivo = $root.root.caminhoArquivo
    }
  } 

返回哈希表列表

Name  : caminhoArquivo
Value : C:/teste

Name  : arquivo
Value : teste.exe

Name  : caminhoArquivo
Value : C:/sistema/res

Name  : arquivo
Value : carro.zip

...

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多