我在一个从本地HTML文件中读取的脚本上编写,修改DOM树然后保存。使用Invoke-WebRequest
COM对象代替HTMLFile
似乎是唯一的方法。
重写其他属性,例如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
任何人都可以告诉我这是一个错误还是对访问该属性有任何限制?我怎样才能找到一种优雅的方式来完成我的工作?
感谢。