Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';修改一个锚点';IHTMLDocument2中的姓名?_Html_Powershell_Dom_Com_Ihtmldocument2 - Fatal编程技术网

为什么可以';修改一个锚点';IHTMLDocument2中的姓名?

为什么可以';修改一个锚点';IHTMLDocument2中的姓名?,html,powershell,dom,com,ihtmldocument2,Html,Powershell,Dom,Com,Ihtmldocument2,我正在编写一个脚本,该脚本读取本地HTML文件,修改DOM树,然后保存。使用HTMLFileCOM对象而不是Invoke WebRequest,似乎是唯一的方法 重写到其他属性,如href就像一个符咒。但不知何故,我发现不可能更改锚点的name属性,除非通过设置outerHTML属性来重新创建整个元素,因为该属性既复杂又难看。然而,removeAttribute方法可以工作,但这不是我想要的 测试用例: $idoc = New-Object -ComObject "HTMLFile" $idoc

我正在编写一个脚本,该脚本读取本地HTML文件,修改DOM树,然后保存。使用
HTMLFile
COM对象而不是
Invoke WebRequest
,似乎是唯一的方法

重写到其他属性,如
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
$idoc=新对象-com对象“HTMLFile”
$idoc.IHTMLDocument2_write(“”)
$idoc.anchors | foreach{$\uu.name=“aaa”/*或$\uu.setAttribute(“name”,“aaa”)*/}
#$idoc.anchors | foreach{$\.getAttribute(“名称”)}