Incidencia #15139

空要素のテキストがPHP側でArray扱いになる
Abrir Fecha: 2009-02-19 15:33 Última actualización: 2009-04-22 11:54

Informador:
(del#37842)
Propietario:
Tipo:
Estado:
Cerrado
Componente:
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Fixed
Fichero:
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)
Comentario
失礼、検証不足だったようです。初稿のコードは無かったことにしてください。
どうやら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
Comentario

ノードがブランク (空白のみを含むテキスト要素) と空要素 (<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
  • Propietario Update from (Ninguno) to kazatoh
2009-04-22 11:54 Updated by: kazatoh
  • Ticket Close date is changed to 2009-04-22 11:54
  • Estado Update from Open to Cerrado
  • Resolución Update from Ninguno to Fixed
Comentario

サンプルアプリケーション 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 » Entrar