我有一个类似结构化HTML文件的目录(给出两个例子):
文件-1.HTML
<html>
<body>
<div class="foo">foo</div>
<div class="bar"><div><p>bar</p></div></div>
<div class="baz">baz</div>
</body>
</html>
文件-2.HTML
<html>
<body>
<div class="foo">foo</div>
<div class="bar"><div><p>apple<br>banana</p></div></div>
<div class="baz">baz</div>
</body>
</html>
我正在尝试创建一个Powershell脚本来返回bar
div的内容,从所有html中删除:
For File-1.html:bar
对于File-2.html:apple banana
我现在有:
$directory = "C:\Users\Public\Documents\Sandbox\HTML"
foreach ($file in Get-ChildItem($directory))
{
$content = Get-Content "$directory\$file"
echo $content.ParsedHtml.getElementById("bar").innerHTML
}
这会返回错误:
You cannot call a method on a null-valued expression.
At C:\Users\Public\Documents\Sandbox\parse-html.ps1:9 char:2
+ echo $content.ParsedHtml.getElementById("bar").innerHTML`
我不明白这个错误,因为bar
是一个存在的HTML元素。
我做错了什么?
答案 0 :(得分:0)
您可以尝试这样的事情:
$content = Get-Content File-1.html
$xmlContent = [xml]$content
$bar = $xmlContent.html.body.div | where {$_.div -eq 'bar'}
Write-Output $bar.InnerXML