5

私のプロジェクトの1つでは、DOMDocumentクラスを使用してXMLドキュメントをロードおよび操作しています。

ドキュメントで使用されているすべての名前空間を取得する必要があります。しかし、私はそれをどのように行うかを見つけることができません。このDOMDocumentクラスには、URIの名前空間プレフィックスまたは名前空間プレフィックスのURIを取得するメソッドがありますが、登録された名前空間を実際に列挙するものは何もありません。

SimpleXMLライブラリにはそのためのメソッドgetNamespaces()があります。に相当するものはありDOMDocumentますか?

4

1 に答える 1

6

DOMにはそのような機能はありません。SimpleXmlのソースコードを簡単に見てきましたが、ロードされたXMLを繰り返し、名前空間を収集していると思います(私のCは非常に悪いです)。最も簡単な解決策は、この目的のためにDOMdomをSimpleXmlにインポートして名前空間をフェッチすることです。多分このように:

class DomUtils
{
    public static function getNamespaces($dom)
    {
        $sxe = simplexml_import_dom($dom);
        return $sxe->getNamespaces(); 
    }

    public static function getDocNamespaces($dom)
    {
        $sxe = simplexml_import_dom($dom);
        return $sxe->getDocNamespaces();
    }
}

XPathを使用してすべての名前空間を取得することもできます。次の質問と回答を参照してください。

于 2010-04-03T20:23:06.923 に答える