2024/07/30(火) [n年前の日記]
#1 [prog] XML整形について
1行でずらずらと書かれたXMLを、人間の目でも見易いように整形したい。利用できるツールはどんなものがあるのかメモしておく。数日前にも一部のツールについてメモしていたような気もするけれど…。
環境は Windows10 x64 22H2。
環境は Windows10 x64 22H2。
◎ DevToys :
GUIで利用できる DevToys というツールに、XML整形機能がある。DevToys 2.0.2.0 x64 Portable を試用。
_DevToys - A Swiss Army knife for developers
「ツールを検索」と表示されてる検索欄に「xml」と打ち込めば、「XML フォーマッター」がリストアップされる。XMLを貼り付けたり、ファイルを開いたりして整形できる。
_DevToys - A Swiss Army knife for developers
「ツールを検索」と表示されてる検索欄に「xml」と打ち込めば、「XML フォーマッター」がリストアップされる。XMLを貼り付けたり、ファイルを開いたりして整形できる。
◎ xmllint :
Linux の libxml2パッケージ等に含まれている。Windows10 x64 22H2 + MSYS2 上で libxml2 をインストールしたら利用できるようになった。
pacman -S libxml2 pacman -S mingw-w64-x86_64-libxml2 pacman -S mingw-w64-i686-libxml2
$ which xmllint /mingw64/bin/xmllint $ xmllint --version D:\msys64\mingw64\bin\xmllint.exe: using libxml version 21209 compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 HTTP DTDValid HTML C14N Catalog XPath XPointer X Include Iconv ISO8859X Unicode Regexps Automata Schemas Schematron Modules Debug Zlib Lzma
xmllint --format INPUT.xml -o OUTPUT.xml
◎ サクラエディタでXMLを整形 :
無料で使えるテキストエディタ、サクラエディタ上で、XML整形ができるマクロがある。Windows10 x64 22H2 + サクラエディタ 32bit Ver. 2.4.2.6048 で試用してみた。
_サクラエディタ
_サクラエディタでXMLを整形 - My備忘録
_Macro/投稿/211 - SakuraEditorWiki
XmlFormat.js を入手。サクラエディタインストールフォルダ\macros\ に入れた。
前述のページのコメントによると、文字参照のエスケープについては、「&」を最初に変換したほうがいいらしい。以下のように修正。
選択範囲を指定後、Shift + Ctrl + Alt + B で呼び出せるように設定しておいた。尚、XMLにはならない文字列が含まれてしまっていると整形処理は走らないので注意。
_サクラエディタ
_サクラエディタでXMLを整形 - My備忘録
_Macro/投稿/211 - SakuraEditorWiki
XmlFormat.js を入手。サクラエディタインストールフォルダ\macros\ に入れた。
前述のページのコメントによると、文字参照のエスケープについては、「&」を最初に変換したほうがいいらしい。以下のように修正。
//文字参照をエスケープする String.prototype.escape = function() { return this.replace("&", "&") .replace("<", "<") .replace(">", ">") .replace("\"", """) .replace("'", "'"); }
選択範囲を指定後、Shift + Ctrl + Alt + B で呼び出せるように設定しておいた。尚、XMLにはならない文字列が含まれてしまっていると整形処理は走らないので注意。
◎ Notepad++でXMLを整形 :
Notepad++ もプラグインを追加することでXMLの整形ができるらしい。Windows10 x64 22H2 + Notepad++ 8.6.8 32bit で試用してみた。
プラグイン → プラグイン管理。「XML Tools」にチェックを入れる。XML Tools の現行パージョンは、3.1.1.13 だった。
インストールに成功すると、プラグイン → XML Tools が選べるようになる。Pretty Print (Ctrl + Alt + Shift + B) で整形ができる。
プラグイン → プラグイン管理。「XML Tools」にチェックを入れる。XML Tools の現行パージョンは、3.1.1.13 だった。
インストールに成功すると、プラグイン → XML Tools が選べるようになる。Pretty Print (Ctrl + Alt + Shift + B) で整形ができる。
◎ XMLStarlet :
以下のページによると、XMLStarlet というツールもあるらしい。
_色々なコマンドラインでの XML の整形方法 - 重要なお知らせ
_XMLStarlet - Wikipedia
_XMLStarlet Command Line XML Toolkit: Download
_XMLStarlet command line XML toolkit - Browse Files at SourceForge.net
Windows10 x64 22H2上で、xmlstarlet-1.6.1-win32.zip を入手して解凍。公式バイナリは xml.exe になっていたけれど、xmlstarlet.exe にリネームして、パスを通してある `D:\home\bin\` 以下に入れておいた。
以下でフォーマットできるらしい。
_色々なコマンドラインでの XML の整形方法 - 重要なお知らせ
_XMLStarlet - Wikipedia
_XMLStarlet Command Line XML Toolkit: Download
_XMLStarlet command line XML toolkit - Browse Files at SourceForge.net
Windows10 x64 22H2上で、xmlstarlet-1.6.1-win32.zip を入手して解凍。公式バイナリは xml.exe になっていたけれど、xmlstarlet.exe にリネームして、パスを通してある `D:\home\bin\` 以下に入れておいた。
以下でフォーマットできるらしい。
xmlstarlet fo hoge.xml
[ ツッコむ ]
#2 [linux][apache] テキストファイルがCGIとして扱われてしまって悩んだ
Webサーバ Apache2で公開しているディレクトリ内に、hoge.pl.txt や hoge.cgi.txt を置くと、何故か CGI として扱われてしまうようで、実行しようとしてエラーになることに気づいた。環境は Debian Linux 10 buster i686 + Apache2 2.4.59-1~deb10u1。
ファイル名の最後が .txt なのだからテキストファイル(text/plain)として扱われるはずでは…? もしかして、ファイル名に .pl や .cgi が含まれているだけで、CGI実行ファイルとして扱ってしまう…?
とりあえず、.htaccess に以下のような記述をして、テキストファイルとして扱われるようにしてみた。
余談。ググってみても、CGIとして動いてくれない状態を動くようにするための指定/記述ばかりで、その逆が全然見つからない…。Microsoft Copilot に何度も尋ねまくって色々試してみたけれど、どうやら RemoveHandler .pl .cgi が効いてくれたっぽい。
ファイル名の最後が .txt なのだからテキストファイル(text/plain)として扱われるはずでは…? もしかして、ファイル名に .pl や .cgi が含まれているだけで、CGI実行ファイルとして扱ってしまう…?
とりあえず、.htaccess に以下のような記述をして、テキストファイルとして扱われるようにしてみた。
Options +Indexes -ExecCGI +FollowSymLinks AddType text/plain .pl.txt AddType text/plain .cgi.txt <FilesMatch "\.(pl|cgi|txt)$"> ForceType text/plain SetHandler none </FilesMatch> <Files ~ "\.(pl|cgi)\.txt$"> ForceType text/plain SetHandler none RemoveHandler .pl .cgi RemoveHandler cgi-script </Files>
- Options -ExecCGI で、CGIを無効化
- FilesMatch や Files で、特定の拡張子のファイルに対して設定を変更する。
- ForceType text/plain で、強制的にテキストファイルとして扱う。
- RemoveHandler .pl .cgi で、.pl や .cgi をCGIファイルとして扱わないことにする。
余談。ググってみても、CGIとして動いてくれない状態を動くようにするための指定/記述ばかりで、その逆が全然見つからない…。Microsoft Copilot に何度も尋ねまくって色々試してみたけれど、どうやら RemoveHandler .pl .cgi が効いてくれたっぽい。
[ ツッコむ ]
#3 [nitijyou] 日記をアップロード
2024/06/06を最後にアップロードしてなかったのでアップロード。
[ ツッコむ ]
以上、1 日分です。