XMLReaderが - ドキュメント内のすべての名前空間を取得します。

日:

XMLReaderのを使用してXML文書の名前空間を取得する方法はありますか?今の私が使用していますSimpleXMLElement::getDocNamespaces()仕事をするが、私はむしろ、大きな文書で作業しておりますのでSimpleXMLのは、メモリ使用量に関して、一度に文書全体をロードします(私の知る限りでは)ので、欠点があります。

任意の助けてくれてありがとう!

ナイジェルレン:

以下からのコードに基づいてhttps://stackoverflow.com/a/12652385/1213708属性は、の接頭辞を持っている場合のXMLReaderを使って文書の属性を読み取る方法を示し、これだけチェックxmlnsし、それがない場合、それはにそれを追加します接頭辞を使用して名前空間のリスト(あるlocalName値)/(属性値である)URI ...

$xml = new XMLReader;
$xml->open($fileName);

$doc = new DOMDocument;
$namespaces = [];
while ($xml->read()) {
    if($xml->hasAttributes)  {
        while($xml->moveToNextAttribute()) {
            if ( $xml->prefix == 'xmlns' ) {
                $namespaces [ $xml->localName ] = $xml->value;
            }
        }
    }
}

print_r($namespaces);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=347587&siteId=1