html - How to wrap an HtmlElement in an HtmlDocument -
is possible wrap htmlelement htmlelement? , if so, how?
lets say, have html, , want wrap img
additional div
:
<html> <head><title>foo</title></head> <body> <img src="test.png"/> <p>hello world</p> </body> </html>
i've tried using following snippet (n.b. document element htmldocument):
$htmlfile = new-object -comobject "htmlfile" $htmlfile.ihtmldocument2_write((gc -path "./html.htm" -raw)) $htmlfile.documentelement.getelementsbytagname("img") | %{ $div = $htmlfile.createelement("div") $div.classname += "nonbreakingimage" $void = $div.appendchild($_) $_.outerhtml = $div.outerhtml }
but this, unfortunately, removes image tag:
<body><p>hello world</p></body>
another idea was, this:
$htmlfile = new-object -comobject "htmlfile" $htmlfile.ihtmldocument2_write((gc -path "./html.htm" -raw)) $htmlfile.documentelement.getelementsbytagname("img") | %{ $parent = $_.parentnode $void = $parent.removechild($_) $div = $parent.appendchild($htmlfile.createelement("div")) $div.classname += " nonbreakingimage" $void = $div.appendchild($_) }
but leaves me wrong child order:
<body> <p>hello world</p> <div class=" nonbreakingimage"><img src="test.png"></div> </body>
any ideas , hints welcome!
you can replace <img>
node <div>
node add (now floating) <img>
node newly added <div>
. in code:
$htmlfile.documentelement.getelementsbytagname("img") | %{ $div = $htmlfile.createelement("div") $div.classname += " nonbreakingimage" $_.parentnode.replacechild($div, $_) $div.appendchild($_) }
in alternative may $_.insertbefore($div, ...)
of node obtained $_.previoussibling(...)
it's longer.
Comments
Post a Comment