Skip to content

Instantly share code, notes, and snippets.

@buzztaiki
Last active August 16, 2025 01:52
Show Gist options
  • Select an option

  • Save buzztaiki/c6f7c66faf0c58a66890ad362100df41 to your computer and use it in GitHub Desktop.

Select an option

Save buzztaiki/c6f7c66faf0c58a66890ad362100df41 to your computer and use it in GitHub Desktop.
prefix 無しの namespace が付いた xml を cli でパースする

prefix 無しの namespace が付いた xml を cli でパースする

以下のファイルを例とする

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0">
  <version>0.0.1</version>
</project>

https://xmlstar.sourceforge.net/doc/UG/ch05s01.html に書かれている通り、-N オプションを使う。

% xml sel -N x=http://maven.apache.org/POM/4.0.0 -t -v '/x:project/x:version' pom.xml
0.0.1

xpath2/3 や xquery2/3 とか使えるらしい。

# -e だけ指定した場合、`qname``*:qname` として扱われるぽい
% xidel -e '/project/version' pom.xml
1.37-SNAPSHOT

# --xpath だと見つからない
% xidel --xpath '/project/version' pom.xml

# --xpath でも `*:qname` なら見つかる
% xidel --xpath '/*:project/*:version' pom.xml
1.37-SNAPSHOT

# xmlstarlet のように xmlns を指定
% xidel --xmlns 'x=http://maven.apache.org/POM/4.0.0' -e '/x:project/x:version' pom.xml
1.37-SNAPSHOT

# BracedURILiteral
% xidel --xpath '/Q{http://maven.apache.org/POM/4.0.0}project/Q{http://maven.apache.org/POM/4.0.0}version' pom.xml
1.37-SNAPSHOT

わりと雑に処理してれくる。

% go run github.com/sibprogrammer/xq@latest -x '/project/version' pom.xml
1.37-SNAPSHOT

% go run github.com/sibprogrammer/xq@latest -j pom.xml | jq '.project.version' -r
1.37-SNAPSHOT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment