倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

改・NamespaceContext の実装を考える (3) : EmptyNamespaceContext

前回作成した AbstractNamespaceContext を用いて、名前空間宣言が全くされていない NamespaceContext を作成しましょう(一覧)。 注意点は、getNamespaceURI(String) メソッドの返り値が常に空文字列 (XMLConstants.NULL_NS_URI) だってことでしょうか? 宣言されていない接頭辞 (unbound prefix) に対しては常にこの値を返すのでした。

import java.util.*;
import javax.xml.namespace.NamespaceContext;
import static javax.xml.XMLConstants.NULL_NS_URI;

/** @author waman */
public final class EmptyNamespaceContext
        extends AbstractNamespaceContext {
    
    public static final NamespaceContext INSTANCE
        = new EmptyContext();

    private EmptyNamespaceContext(){}

    @Override
    protected String getNamespaceURISimply(String prefix) {
        return NULL_NS_URI;
    }

    @Override
    protected Set<String> getPrefixSetSimply(String uri) {
        return Collections.emptySet();
    }
}

ここではシングルトンクラスとして実装していますが、これは必須ではありません。