Почему я не могу изменить имя якоря в IHTMLDocument2?
Я пишу сценарий, который читает из локального 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
Может кто-нибудь сказать мне, это ошибка или есть какие-то ограничения на доступ к атрибуту? Как я могу найти элегантный способ сделать свою работу?
Благодарю.