待辦事項 #15139

空要素のテキストがPHP側でArray扱いになる
啟用日期: 2009-02-19 15:33 最後更新: 2009-04-22 11:54

回報者:
(del#37842)
負責人:
類型:
狀態:
關閉
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
修正
檔案:
1

細節

maskat2.0.0にて

maskat-sample-phpなどに付属しているmaskat.phpですが parse_request_xml()のバグで、空要素のtextが送られると Array扱いになってしまいます。

原因は52行目 if (count($grand_children) == 1 and $grand_children0->tagname == "#text") {

こうではなく、 if (count($grand_children) == 1 (and $grand_children0->tagname == "#text" or $grand_children0->is_blank_node)) {

とするべきです。 (子要素が1つで、テキストノードであるか、空要素である)

Ticket History (3/6 Histories)

2009-02-19 15:49 Updated by: (del#37842)
評語
失礼、検証不足だったようです。初稿のコードは無かったことにしてください。
どうやらdomxml-php4-to-php5にあのプロパティが無い様子。

よって、maskat.phpのL61を次のように修正したものがよさそうです

if (empty($list)) {
  $result[$child->tagname] = '';
} else {
  $result[$child->tagname] = $list;
}
2009-02-24 16:50 Updated by: kazatoh
2009-04-15 13:39 Updated by: kazatoh
  • Details Updated
評語

ノードがブランク (空白のみを含むテキスト要素) と空要素 (<tag/> や <tag></tag>) の場合にはハッシュにキー・値を登録せず、無視する仕様にします。 maskat.php の L51 に以下を追加するパッチを添付しました。

51:    /* 空白のみのテキスト要素 (ブランクノード) と空要素を無視 */
52:    if ($child->is_blank_node() || !$child->has_child_nodes()) {
53:      continue;
54:    }

この修正を 2.1.0 版のサンプルに同梱してリリース予定です。別案としてハッシュの値に空文字を登録するという方法もあります。maskat.php はあくまでサンプルなので、ご自由に改変していただいて構いません。

2009-04-22 11:52 Updated by: kazatoh
  • 負責人 Update from (無) to kazatoh
2009-04-22 11:54 Updated by: kazatoh
  • Ticket Close date is changed to 2009-04-22 11:54
  • 狀態 Update from 開啟 to 關閉
  • 處理結果 Update from to 修正
評語

サンプルアプリケーション PHP 版 2.1.0 にこの修正を含めました。ご報告ありがとうございました。 http://sourceforge.jp/forum/forum.php?forum_id=18271

Attachment File List

編輯

Please login to add comment to this ticket » 登入