patricktoulon
XLDnaute Barbatruc
bonjour a tous
j'ai enfin trouvé le moyen d'indenter du code html par vba
mais ma fonction d'indentation n'accepte pas les attributs des éléments sans les guillemets
pour mon indentation j'ai du recourir au remplacements des childnodes type nodetext par des balise "PRE"
et donc après ce replacement des nodetext le body.innerhtml ne contient plus les attributs entre guillemets
il me faut donc les remettre
problème element.attributes me renvoie le 128 à 139 attributs possibles dans une boucle for each att in .attibutes alors que j'en ai qu'un ou deux
si quelqu'un a une idée je prends
allez les crack vba/html
j'ai enfin trouvé le moyen d'indenter du code html par vba
mais ma fonction d'indentation n'accepte pas les attributs des éléments sans les guillemets
pour mon indentation j'ai du recourir au remplacements des childnodes type nodetext par des balise "PRE"
et donc après ce replacement des nodetext le body.innerhtml ne contient plus les attributs entre guillemets
il me faut donc les remettre
problème element.attributes me renvoie le 128 à 139 attributs possibles dans une boucle for each att in .attibutes alors que j'en ai qu'un ou deux
si quelqu'un a une idée je prends
VB:
Sub test()
Dim code$, i&, elem As Object, t, x&
code = "<html><body><div><font color=""red"" face=""Algerian"">toto<B> la <em>grosse</em> fritte</B></font><font size=""4""><S>toto</S><B>la grosse anguille</B></font></div></body></html>"
With CreateObject("htmlfile")
.body.innerhtml = code
For Each elem In .body.all
If elem.ChildNodes.Length > 1 And elem.ChildNodes(0).NodeType = 3 Then
For Each nod In elem.ChildNodes
If nod.NodeType = 3 Then
Set pre = .createelement("pre"): pre.innerhtml = Replace(nod.NodeValue, " ", " ")
elem.InsertBefore pre, nod.NextSibling
elem.RemoveChild (nod)
End If
Next
End If
Next
code = CStr(.body.innerhtml)
For Each elem In .all
code = Replace(Replace(code, "<" & elem.tagname, vbCrLf & "<" & elem.tagname), vbCrLf & vbCrLf, vbCrLf)
Next
Debug.Print code
' MsgBox Indenter_HTML_XML_Code(code)'pour après correction des guillemets
End With
End Sub
Dernière édition: