引用:
youichさんから教えていただいたコードではうまくいきませんでした。 まだアクションスクリプトをあまり理解していないので僕の書き方に問題があるのかも
yoshi04さんのアクションスクリプトの書き方がおかしいんじゃないと思いますよ(笑)
yoshi04さんがポストされたアプリケーションから書き出されているというXMLファイルの
空白の部分が全角の空白になっているからです。
全角の空白を□で表すと↓のようになっています。
<contents>
□□<comment>サイドブラシ使用時:690mm
サイドブラシ未使用時:500mm</comment>
</contents>
全角の空白はignoreWhiteをtrueに設定していても
意味のあるテキストノードとして処理されます。
で、私はこれをポストされた時のミスかバグだろうと考えて
全角の空白を半角の空白として考えてコードを書きました。
もしこの空白がミスじゃなく意味のあるものならば先にポストしたコードは
以下のようにcommentノードを探すのにもうひとつ(nextSibling)進める必要があります。
my_xml.onLoad = function(ok) {
if (ok) { //contents //comment //text
trace(this.firstChild.firstChild.nodeType); //3 テキストノード
var comment = this.firstChild.firstChild.nextSibling.firstChild.nodeValue;
var str = myTextField.text = comment.split(CRLF).join(LF);
trace(str);
} else {
}
};
ついでに、いきさつが良く解るようなテストコードです。
System.useCodePage = true;
ZENKAKU_SPACE = " ";
HANKAKU_SPACE = " ";
LF = chr(10);
CRLF = chr(13) + chr(10);
var x = new XML();
x.ignoreWhite = true;
x.onData = function(d) {
var s = d.split(ZENKAKU_SPACE).join("□");
printTitle("そのままのxmlデータ");
trace(s);
s = s.split("□").join(HANKAKU_SPACE);
printTitle("xmlデータの全角スペースを半角スペースに変換");
trace(s);
this.parseXML(s);
this.onLoad(true);
};
x.onLoad = function(ok){
if (ok) { //contents //comment //text
var comment = this.firstChild.firstChild.firstChild.nodeValue;
var str = myTextField.text = comment.split(CRLF).join(LF);
printTitle("comment のtextnodeの改行をcrlf -> lf に変換");
trace(str);
} else {
}
};
x.load("xxx.xml");
function printTitle(str){
trace("----------------------------------------------------------------------");
trace(str);
trace("----------------------------------------------------------------------");
}
出力
----------------------------------------------------------------------
そのままのxmlデータ
----------------------------------------------------------------------
<contents>
□□<comment>サイドブラシ使用時:690mm
サイドブラシ未使用時:500mm</comment>
</contents>
----------------------------------------------------------------------
xmlデータの全角スペースを半角スペースに変換
----------------------------------------------------------------------
<contents>
<comment>サイドブラシ使用時:690mm
サイドブラシ未使用時:500mm</comment>
</contents>
----------------------------------------------------------------------
comment のtextnodeの改行をcrlf -> lf に変換
----------------------------------------------------------------------
サイドブラシ使用時:690mm
サイドブラシ未使用時:500mm
引用:
解決していたスレッドに投稿して申し訳ありませんでした。
あら、最初のスレッドとは違うかったのですね、
先ほどはいっしょくたにポストしてすみませんでした。
----------------
- yo