Je viens de commencer à utiliser l'objet DOMDocument puisque je veux analyser un fichier HTML téléchargé et l'utiliser ensuite comme modèle pour mes cms.Comment résoudre ce problème d'indentation avec DOMDocument?
Je charge du code HTML à partir d'un fichier et, à des fins de test, je l'enregistre en tant que nouveau fichier HTML sans rien changer. Le problème est: l'indentation est foiré.
Voici ce que mon fichier HTML ressemble à:
<!DOCTYPE html>
<html>
<head>
<title>DOM Testpage</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="language" content="deutsch, de" />
</head>
<body>
<div class="pageOverlay"></div>
<div style="height:100px;"></div>
<div id="LoginForm">
<div id="LoginLogo">
Here's some Text
<br />
And another Text with some German Umlauts: öäü ÖÄÜ ß and so on...
<br />
</div>
<form method="post" action="">
<!-- Here be dragons. And a nice comment -->
<input type="text" name="cms_user" value="" class="InputText " data-defaultvalue="Username" title="Please enter your username." style="margin:0px 0px 20px 0px;" />
<input type="password" name="cms_password" value="" class="InputText " data-defaultvalue="Password" title="Please enter your password." style="margin:0px 0px 20px 0px;" />
<input type="checkbox" name="cms_remember_login" value="1" id="cms_remember_login" />
<label for="cms_remember_login" style="line-height:14px; margin-left:5px;">Remember Login</label>
<!-- Another comment
This one's even
longer -->
<input type="submit" name="submitLogin" value="Login" />
</form>
</div>
</body>
</html>
La partie PHP:
<?php
$lo_dom = new DOMDocument();
$lo_dom->loadHTMLFile("test.html");
$lo_dom->saveHTMLFile("templates/test_neu.html");
?>
Quand j'ouvre le nouveau fichier HTML, la source ressemble à ceci:
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>DOM Testpage</title><meta name="language" content="deutsch, de"></head><body>
<div class="pageOverlay"></div>
<div style="height:100px;"></div>
<div id="LoginForm">
<div id="LoginLogo">
Here's some Text
<br>
And another Text with some German Umlauts: öäü ÖÄÜ ß and so on...
<br></div>
<form method="post" action="">
<!-- Here be dragons. And a nice comment -->
<input type="text" name="cms_user" value="" class="InputText " data-defaultvalue="Username" title="Please enter your username." style="margin:0px 0px 20px 0px;"><input type="password" name="cms_password" value="" class="InputText " data-defaultvalue="Password" title="Please enter your password." style="margin:0px 0px 20px 0px;"><input type="checkbox" name="cms_remember_login" value="1" id="cms_remember_login"><label for="cms_remember_login" style="line-height:14px; margin-left:5px;">Remember Login</label>
<!-- Another comment
This one's even
longer -->
<input type="submit" name="submitLogin" value="Login"></form>
</div>
</body></html>
J'ai déjà essayé de régler preserveWhiteSpace
et formatOutput
mais cela ne change rien.
Ce n'est pas un gros problème du tout, mais ce serait bien si la sortie ressemblait à l'entrée.
Des idées pour résoudre ce problème?
Et une autre question: est-il un moyen d'insérer manuellement un \n
linebreak après avoir ajouté un autre nœud avec appendChild()
?
Merci pour votre réponse. J'ai déjà essayé ces deux options mais la mise en forme reste la même. Je vais jeter un oeil à vos liens fournit. Merci beaucoup. – fabsn