Repolode
beevik

beevik/etree

XMLを要素ツリーとして解析・検索・変更・出力できる軽量な純Goパッケージ。XPath風のパス検索にも対応。

スター
1,672
フォーク
191
未解決の Issue
4
最終コミット
先月

これは何?

etreeはXML文書を要素ツリーとして表現するため、Goでの走査、検索、変更を簡単に行えます。文書を一から構築できるほか、ファイル、バイトスライス、文字列、io.Readerから読み込み、スペースまたはタブによる任意のインデントを付けて出力できます。

子要素や属性を選択するシンプルなメソッドに加え、軽量なXPath風のパス検索を利用できます。パスは繰り返し検索に備えて事前にコンパイルでき、ダブルスラッシュによる再帰検索や、属性値・名前空間プレフィックス付きの値に対する述語をサポートします。設計はPythonのElementTreeモジュールに着想を得ています。

etreeは標準ライブラリ以外に依存しない純Go実装で、標準のencoding/xmlパッケージを基盤としています。Go 1.23以降が必要です。

主な機能

  • 01XML文書を一から構築するほか、ファイル、文字列、バイトスライス、io.Readerから解析できます。
  • 02シンプルなセレクターやXPath風のパス検索で、再帰検索や述語による検索も行えます。
  • 03パスを事前コンパイルすることで、繰り返しの検索を効率化できます。
  • 04シリアライズした出力にスペースまたはタブで自動的にインデントを付けます。
  • 05純Go実装で、標準ライブラリ以外の依存関係はありません。

ユースケース

  • GoサービスでXML設定ファイルを読み込み、変更する。
  • Goコードからフィードや構造化データのエクスポートなどのXML文書を生成する。
  • パス検索を使って、大きなXMLペイロードから特定の値を取り出す。

クイックスタート

  1. 1

    go get で etree パッケージをインストールします

    go get github.com/beevik/etree
  2. 2

    README の作成例にあるように、Go プログラムで新しい XML ドキュメントを作成し、stdout に出力します

トピック

#xml#go#xpath#xml-parser#dom#etree#path

よくある質問

etree とは?
XMLを要素ツリーとして解析・検索・変更・出力できる軽量な純Goパッケージ。XPath風のパス検索にも対応。 etreeはXML文書を要素ツリーとして表現するため、Goでの走査、検索、変更を簡単に行えます。文書を一から構築できるほか、ファイル、バイトスライス、文字列、io.Readerから読み込み、スペースまたはタブによる任意のインデントを付けて出力できます。
etree は無料で使えますか?ライセンスは?
etree は BSD-2-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
etree は今もメンテナンスされていますか?
半年以内に更新あり。etree の最終コミットは 2026年9月23日 です。
etree は何に使えますか?
GoサービスでXML設定ファイルを読み込み、変更する。 Goコードからフィードや構造化データのエクスポートなどのXML文書を生成する。 パス検索を使って、大きなXMLペイロードから特定の値を取り出す。
etree のインストール方法は?
go get で etree パッケージをインストールします: go get github.com/beevik/etree README の作成例にあるように、Go プログラムで新しい XML ドキュメントを作成し、stdout に出力します
etree はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/beevik/etree

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

DOMメソッド、CSSセレクター、XPathを使って実際のHTMLを解析、スクレイピング、編集、サニタイズできるJavaライブラリ。

バックエンド・API#java#html-parser#web-scraping
1.1万2321JavaMIT活発にメンテナンス更新 3 日前

サーバーやブラウザーでHTML・XMLを解析、操作できる高速なjQuery風ライブラリ。

開発ツール#html-parser#jquery#scraping
3.1万1747TypeScriptMIT活発にメンテナンス更新 18 時間前