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: 
			
		
	
								
								
									
	
		
			
		
		
	
	
	
		
			
		
		
	
								
							
							 
	 
 
		 
 
		 
 
		