(96) xmllintコマンドでHTML文を整形

投稿者: | 2018年10月4日

1. やりたいこと

PHPや Pythonで WEBページを出力する際に、HTML文のインデントなどを気にしないことが多い。

でも…
出力された HTML文の中身を確認したいとき、見やすくインデントされていてほしい。

そこで…
xmllint コマンドで整形する。

2. やってみる

1) まずは基本、HTML文を整形する。

こんな HTML文があったとする。
tableが 1行に書かれていて見づらい。

<table class="myxyz"><tr><th>No.1</th><td>asdfghjkl</td></tr><tr><th>No.2</th><td>qwertyuiop</td></tr></table>

xmllint コマンドで一発成型する。

xmllint --format tmp.html

本来 XML用のコマンドなので、先頭行に xml version と付けられてしまうので注意する。

<?xml version="1.0"?>
<table class="myxyz">
  <tr>
    <th>No.1</th>
    <td>asdfghjkl</td>
  </tr>
  <tr>
    <th>No.2</th>
    <td>qwertyuiop</td>
  </tr>
</table>

※ -htmlオプションで 1行目を消せるが、余計なタグが付けられてしまうし、インデントされない。

xmllint -html --format tmp.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><table class="myxyz">
<tr>
<th>No.1</th>
<td>asdfghjkl</td>
</tr>
<tr>
<th>No.2</th>
<td>qwertyuiop</td>
</tr>
</table></body></html>

2) 出力ファイル名を指定する。

出力ファイルは -o で指定する。

xmllint --format tmp.html -o out.html

カテゴリー: XML

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です