select-xml 不返回任何结果

Sta*_*agg 3 powershell

我正在尝试使用 powershell 命令 select-xml 从 xml 文件中选择数据。当我运行下面的命令时,没有返回结果或错误。我希望屏幕上返回版本列表。这有什么问题吗?

PS C:\> select-xml -path "C:\t.xml" -xpath "//edition" | foreach {$_.node.InnerXML}
PS C:\>
Run Code Online (Sandbox Code Playgroud)

XML 文件 (C:\t.xml) 是:

 <?xml version="1.0" encoding="utf-8"?>
  <Book>
    <projects>
      <project name="Book1" date="2009-01-20">
        <editions>
           <edition language="English">En.Book1.com</edition>
           <edition language="German">Ge.Book1.Com</edition>
           <edition language="French">Fr.Book1.com</edition>
           <edition language="Polish">Pl.Book1.com</edition>
        </editions>
      </project>
    </projects>
  </Book>
Run Code Online (Sandbox Code Playgroud)

Sta*_*agg 5

好的,所以我知道出了什么问题。XML 声明的第一个节点之前有一个空格字符。真烦人。我尝试了你的第一行:

PS H:\> $xml = ([xml](Get-Content -Path C:\scripts\t.xml)).Book.Projects.Project
Run Code Online (Sandbox Code Playgroud)

它出错了:

“..XML声明必须是文档中的第一个节点,并且前面不允许出现空格字符......”

我确信在尝试读取 xml 文件时, select-xml 应该会在问题中失败并出现同样的错误。xml 文件在 IE 中呈现良好。