Почему я не могу изменить имя якоря в 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

Может кто-нибудь сказать мне, это ошибка или есть какие-то ограничения на доступ к атрибуту? Как я могу найти элегантный способ сделать свою работу?

Благодарю.

0 ответов

Другие вопросы по тегам