使用Powershell打开本地.htm文件并通过XPath获取值

时间:2014-12-01 12:55:32

标签: html powershell

我是Powershell的新手,我正在尝试使用它来打开现有的.htm文件,然后通过XPath从该文件中获取一些值,然后在其他地方使用。

这是我目前使用脚本的地方:

$localHtmlFile = 'myfile.htm'
$html = New-Object -com "HTMLFILE"
$html.write((Get-Content $localHtmlFile | Out-String))

$html.AllElements |
        Where XPath -eq "html/body/h4[1]/strong" |
        Select -First 1 -ExpandProperty innerText 

我遇到的问题是我在运行时遇到以下错误:

使用“1”参数调用“write”的异常:“类型不匹配

我尝试了多个.htm文件。我正在使用Powershell v4.0。

有什么想法吗?我确信这是显而易见的,但我无法理解它。此外,我还没有设法测试XPath部分,因为我无法超越写入异常。所以我不完全确定代码是否正确。

非常感谢。

1 个答案:

答案 0 :(得分:3)

假设您的myfile.htm是有效的XML文档,您可以使用Select-XML cmdlet查询XML树中的节点。

例如,如果你的myfile.htm是这样的

<html>
  <head>
   <title>Test</title>
  </head>
  <body>
   <h4><strong>My First Heading</strong></h4>
  </body>
</html>

然后您可以使用h4

查询Select-XML的内容

PS C:\> $h4txt = (Select-Xml -Path .\myfile.htm -XPath //body/h4).Node.InnerText

PS C:\> $h4txt My First Heading

您可以在选择

上参考here获取XPath示例

希望有所帮助!