Thread Rating:
  • 724 Vote(s) - 2.76 Average
  • 1
  • 2
  • 3
  • 4
  • 5
半角スペースのみのsoapレスポンスについて
08-24-2011, 01:47 PM,
#9
RE: 半角スペースのみのsoapレスポンスについて
SAXPaser のイベントからで、
呼ばれる契機は確かに四箇所ですが
要素が値を表すものである場合

{method public {end-element
namespace:String,
local-name:String,
q-name:String}:void

から呼ばれるようです。
そこで、以下のコードで出力を見てみました。

Code:
{method private {check-characters flg:bool = false}:void
    {if not self.char-buffer.empty? then
    {if flg then
            {output "*", self.char-buffer.empty? "*"}
        }
        {for c in self.char-buffer do
            {if not {StreamContentHandler.white-space? c} then
                let cs:String = {self.char-buffer.to-String}
                {self.events.append
                    {XMLCharacters
                        cs,
                        xml-name-values = {self.string-to-xml-values cs}
                    }
                }
                {break}
            }
        }
        {self.char-buffer.clear}
    }
}

ContentHandleクラス の end-element は
要素の終了で呼ばれるためそれが値であろうが、単なるxml記述上の改行や空白であろうが
削除してしまいます。

汎用的な改修は難しいかもしれませんが、
項目に特化するならば、local-name、
とあるxmlだけに絞るなら更に namespace を
引数に追加して、強引にスペースを返却させることは可能でした。

Code:
{method private {check-characters flg:bool = false, local-name:#String = null, namespace:#String = null}:void
    {if not self.char-buffer.empty? then
        {if flg and  namespace == "http://temp.openuri.org/Hoge/hogehoge.xsd" then
            {switch local-name
             case "hoge","hoge_hoge","hoge_desu"
                let cs:String = {self.char-buffer.to-String}
                {self.events.append
                    {XMLCharacters
                        cs,
                        xml-name-values = {self.string-to-xml-values cs}
                    }
                }
                {self.char-buffer.clear}
                {return}
            }
        }
        {for c in self.char-buffer do
            {if not {StreamContentHandler.white-space? c} then
                let cs:String = {self.char-buffer.to-String}
                {self.events.append
                    {XMLCharacters
                        cs,
                        xml-name-values = {self.string-to-xml-values cs}
                    }
                }
                {break}
            }
        }
        {self.char-buffer.clear}
    }
  }

もうちょっとうまくやれるかもしれませんね。


Messages In This Thread
RE: 半角スペースのみのsoapレスポンスについて - by onyo - 08-24-2011, 01:47 PM
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('223')