日:
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);