コンテンツへスキップ
uencoder

名前空間付き XML をパースする

XML 名前空間は要素名の衝突を避けるために名前を修飾します。xmlns 宣言、デフォルト名前空間とプレフィックス付き名前空間、正しいパース方法を学びましょう。

  1. 1

    XML 名前空間は、URI で要素名の曖昧さを解消します。名前空間は xmlns="uri"(デフォルト)または xmlns:prefix="uri"(接頭辞付き)で宣言します。要素は修飾されます:<prefix:element>。名前空間 URI が識別子であり、接頭辞は単なる省略表記です。ローカル名が同じでも名前空間が異なる 2 つの要素は、別の要素です。

  2. 2
    XML フォーマッター →

    XML を整形して、名前空間宣言をはっきり確認します。フォーマッターは、どの接頭辞がどの URI に対応するかを表示します。接頭辞付きのすべての要素に、スコープ内に対応する xmlns 宣言があることを確認してください。

  3. 3
    JSON XML 相互変換ツール →

    名前空間付き XML を JSON に変換します。名前空間で修飾された要素は、通常、接頭辞付きキーになります:<ns:element> → "ns:element" または "{uri}element"(コンバーターによる)。正しいキーを問い合わせるために、お使いのコンバーターの名前空間処理を理解してください。

  4. 4

    よくある名前空間:xmlns="http://www.w3.org/1999/xhtml"(XHTML)、xmlns:svg="http://www.w3.org/2000/svg"(SVG)、xmlns:atom="http://www.w3.org/2005/Atom"(Atom フィード)。パース時には、接頭辞ではなく名前空間 URI でマッチさせてください。接頭辞は再割り当て可能です。堅牢な問い合わせには、名前空間リゾルバー付きの XPath を使ってください。

よくある質問

なぜ名前空間を使うのですか?
名前の衝突なしに XML の語彙を組み合わせるためです。例えば、XHTML と SVG の両方に <title> 要素があります。名前空間が <xhtml:title> と <svg:title> を区別します。名前空間がなければ、パーサーは両者を見分けられません。
接頭辞は重要ですか?
いいえ。識別子は接頭辞ではなく名前空間 URI です。<foo:bar xmlns:foo="urn:x"> と <baz:bar xmlns:baz="urn:x"> は同じ要素です。比較や問い合わせでは、常に接頭辞ではなく URI を使ってください。接頭辞は任意の省略表記です。

このタスクを解決するワークフロー

関連ツール