質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2190閲覧

DOM(getElementsByTagName)でnodeが取得することができない

SugiuraY

総合スコア317

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/03/14 07:39

編集2017/03/14 07:40

いつも、大変お世話になっております。

大量の情報を有するXML文書においてDOM(getElementsByTagName)を使用して指定するノードを取得しようとしております。

PHP

1$xml =file_get_contents("Z_xbrl/XXXX/XXXX/XXXX.xbrl"); 2 3$dom = new DOMDocument('1.0', 'UTF-8'); 4$dom->preserveWhiteSpace = false; 5$dom->formatOutput = true; 6$dom->loadXML($xml); 7$root = $dom->getElementsByTagName("xbrl"); 8var_dump($root); 9//出力結果 10//object(DOMNodeList)#3 (1) { ["length"]=> int(0) }

上記の通り、出力の結果は空のオブジェクトが返ってきてしまいます。

ここで、
データが大量だったのでxbrlのタグだけを抜粋して、同じ手続を実施したところ、正しくノードを取得することができました。
量は10万行以上のコードで、エディターで閲覧していてもエディターが固まるほどです。。

従って、xmlのコード自体や上記のphpのコードには問題がないと思われるのですが、なぜか取得することできません。

あまりにもloadするXMLの量が大きすぎる場合には、適切にDOMでノードが取得できないというケース等ありえるのでしょうか?

普通に考えれば、object(DOMNodeList)#3 (1) { ["length"]=> int(0) }を返さずにerrorを投げてくるはずなのですが、他に思い当たる原因がなく、途方にくれてたため、お伺いさせて頂きました。

宜しくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

xbrl要素が何かしらの名前空間に含まれている、ということはないですか?

名前空間付きのタグを取得したい場合、getElementsByTagNameNSの出番となります(PHPマニュアル)。

投稿2017/03/14 07:43

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SugiuraY

2017/03/14 09:01

ご回答有難うございます。 実は名前空間に含まれて入るのですが、他の量が少ないxmlも同様にprefix(xbrli:)付きですが、getElementsByTagNameで取得できております。構造は同様です。 いずれにしても、getElementsByTagNameNSで名前空間を指定しても取得することができませんでした。 量が多く処理しきれずに空のオブジェクトを返すというのはやはりありえませんよね。。。_?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問