高木のブログ

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 -

参考


ytkg

Written by ytkg, Twitter, GitHub