Flex / Actionscript — почему не работает ‘XML.ignoreWhitespace = false’?

#xml #apache-flex #actionscript-3 #flex4

#xml #apache-flex #actionscript-3 #flex4

Вопрос:

Следующие простые коды показывают, как я пытаюсь сохранить пробелы в моем XML, но это не работает! Есть идеи, что я здесь делаю не так? (обратите внимание на пробел перед ‘world!’

 <?xml version="1.0" encoding="utf-8"?>
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    minWidth="955" minHeight="600"
    creationComplete="application1_creationCompleteHandler(event)"
    >
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.controls.Alert;

            XML.ignoreWhitespace = false;

            protected function application1_creationCompleteHandler(event:FlexEvent):void {
                var xmlString:String =
                    "<sentence><word1>hello</word1><word2> world!</word2></sentence>";
                trace(xmlString);

                XML.ignoreWhitespace = false;

                var xml:XML = 
                    new XML(xmlString);
                trace(xml.toXMLString());
                Alert.show(xml.toXMLString());
            }

        ]]>
    </fx:Script>
</s:Application>
  

Пожалуйста, помогите… Спасибо!

Ответ №1:

Используйте CDATA для форматирования текстовых узлов с сохранением пробелов:

 <sentence><word1>hello</word1><word2><![CDATA[ world!]]></word2></sentence>
  

Бен прав насчет значения ignoreWhitespace .

Ответ №2:

Я почти уверен, что ignoreWhitespace игнорирует пробелы форматирования и табуляции между xml-тегами, но он не обрезает текст внутри текстового узла.

Смотрите это краткое введение