xmllint でXMLファイルを読みやすく整形する
2022/03/25
自動生成されたサイトマップの記事数を確認したくて curl を叩いたら1行で出力されてしまった
$ curl https://takagi.blog/sitemap/sitemap-0.xml
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://takagi.blog/create-blog-with-remix-and-microcms-and-deploy-to-vercel/</loc><changefreq>daily</changefreq><priority>0.7</priority></url>...以下略
これだと確認しづらいので jq のXML版無いかなと思って調べたら、xmllint っていうもので整形できるらしい
CentOS 7 では元から入っていた(入れた記憶ないので多分あってる)
使い方
xmllint --format ファイル名
でOK
$ xmllint --format sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.
9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:vid
eo="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://takagi.blog/create-blog-with-remix-and-microcms-and-deploy-to-vercel/</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://takagi.blog/adding-rspec-to-sinatra-app/</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://takagi.blog/when-using-sinatra-with-ruby-3-also-need-app-server/</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
...以下略
パイプ
curl の結果をそのまま使う場合は -
で出力を取得する
$ curl -s https://takagi.blog/sitemap/sitemap-0.xml | xmllint --format -
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://takagi.blog/create-blog-with-remix-and-microcms-and-deploy-to-vercel/</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://takagi.blog/adding-rspec-to-sinatra-app/</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://takagi.blog/when-using-sinatra-with-ruby-3-also-need-app-server/</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
...以下略
Vim
Vim で開いたあとに整形したい時
:%!xmllint --format -