我编写了一个从本地 HTML 文件读取、修改 DOM 树然后保存的脚本。而不是Invoke-WebRequest
,使用HTMLFile
COM 对象似乎是这样做的唯一方法。
重写为其他属性href
就像一个魅力。但不知何故,我发现改变锚的属性是不可能的,除非通过设置复杂而丑陋的属性来name
重新创建整个元素。outerHTML
但是,removeAttribute
方法有效,但这不是我想要的。
测试用例:
$idoc = New-Object -ComObject "HTMLFile"
$idoc.IHTMLDocument2_write("<body><a name=123></a><a name=456></a></body>")
$idoc.anchors | foreach {$_.name = "aaa"; /* or $_.setAttribute("name", "aaa") */}
# $idoc.anchors | foreach {$_.getAttribute("name")} <- changed
# $idoc.anchors | foreach {$_.outerHTML} <- remains unchanged
谁能告诉我这是一个错误还是对访问属性有任何限制?我怎样才能找到一种优雅的方式来完成我的工作?
谢谢。