XMLでホワイトスペースを含むcontentを扱う
contentのホワイトスペースを残すには、XML.prettyPrintingをfalseにしないといけない。デフォルトはtrue。
このprettyPrintingは、出力時にタグ間に改行とインデントを入れて整形するかどうかを決定する属性。デフォルトはtrue。インデントの幅は、XML.prettyIndentで調整する。こちらのデフォルトは2。
ちなみに、XML.ignoreWhitespaceというのがあるが、こちらは解析時のオプションで、デフォルトはtrue。
結論として、ホワイトスペースを含むcontentを扱う場合には、
・入力時はXML.ignoreWhitespaceをfalseにする
・出力時はXML.prettyPrintingをfalseにする
一応、振る舞いを確認できるソースと結果も載せておきます。
var xmlStr:String = "<foo><bar> a </bar></foo>"; var xml1:XML = XML(xmlStr); trace("[xml1]"); trace("content of bar=" + xml1.bar); trace(xml1.toXMLString()); trace("----"); XML.ignoreWhitespace = false; var xml2:XML = XML(xmlStr); trace("[xml2]"); trace("content of bar=" + xml2.bar); trace(xml2.toXMLString()); trace("----"); XML.prettyPrinting = false; var xml3:XML = XML(xmlStr); trace("[xml3]"); trace("content of bar=" + xml3.bar); trace(xml3.toXMLString()); trace("----");
[xml1] content of bar=a <foo> <bar>a</bar> </foo> ---- [xml2] content of bar= a <foo> <bar>a</bar> </foo> ---- [xml3] content of bar= a <foo><bar> a </bar></foo> ----