Во-первых, я вижу пару проблем с вашим XML.Это неверно, и это удивительно, что вы не получите ошибку.
1) Корневого узла нет.Простым решением было бы поместить то, что у вас уже есть, в тег или что-то более значимое.Но вам нужно иметь корневой узел.
2) Имена узлов, начинающиеся с цифр, - плохая идея.Не уверен, что он действителен в соответствии со спецификацией XML, но даже если это так, он не будет действительным скриптом действий.В этом случае вам придется избегать использования точек (вместо data1.3c
, что-то вроде data1["3c"]
. Как правило, называйте ваши узлы так же, как вы называете свои переменные, и у вас все будет хорошо.
Если данные в <TextFlow>
предназначены для строки, и вы не заинтересованы в их разборе, возможно, лучшая идея заключить их в раздел CDATA:
<c3><![CDATA[<TextFlow xmlns="http://ns.adobe.com/textLayout/2008">
<p direction="ltr" >
<span>some text</span>
<span>some additional text</span>
</p>
<p direction="ltr">
<span>some text</span>
<span>some additional text</span>
</p>
</TextFlow>]]></c3>
В противном случае вам следует использоватьПространства имен xml для работы с ним (обратите внимание, что узел <TextFlow>
имеет объявление xmlns
; xmlns
обозначает пространство имен XML.
Вы можете попробовать что-то вроде этого, чтобы получить его:
var layout_ns:Namespace = new Namespace("http://ns.adobe.com/textLayout/2008");
trace(your_xml.data3.c3.layout_ns::TextFlow);
Уведомление TextFlow
начинается с правильного пространства имен.
Альтернативой приведенному выше коду является установка пространства имен по умолчанию:
var layout_ns:Namespace = new Namespace("http://ns.adobe.com/textLayout/2008");
default xml namespace = layout_ns;
trace(your_xml.data3.c3.TextFlow);
Этот тип игнорирует цель наличия пространств именво-первых, хотя.
PS
Если вы перейдете ко второму варианту (т.е. без CDATA), как только вы доберетесь до нужного узла, вы можетеиспользуйте метод toXMLString , чтобы получить содержимоеузел в виде строки.