Tíquete #15139

空要素のテキストがPHP側でArray扱いになる
: 2009-02-19 15:33 Última Atualização: 2009-04-22 11:54

Relator:
(del#37842)
Dono:
Tipo:
Estado:
Fechado
Componente:
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
1

Details

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)
Comentário
失礼、検証不足だったようです。初稿のコードは無かったことにしてください。
どうやら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
Comentário

ノードがブランク (空白のみを含むテキスト要素) と空要素 (<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
  • Dono Update from (Nenhum) to kazatoh
2009-04-22 11:54 Updated by: kazatoh
  • Ticket Close date is changed to 2009-04-22 11:54
  • Estado Update from Aberto to Fechado
  • Resolução Update from Nenhum to Fixed
Comentário

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

Attachment File List

Editar

Please login to add comment to this ticket » Login