XML-объект удаляет пространство имен Flex - PullRequest
2 голосов
/ 20 февраля 2011

С помощью следующего кода все работает как положено, и я сохраняю как пространство имен по умолчанию, так и пространство имен xsi в распечатке трассировки.

var tempData = <objects xmlns="http://www.spicefactory.org/parsley" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                    </objects>


    var scriptParent:XML = <xml></xml>;
    scriptParent.appendChild(tempData);
    trace ("scriptParent " + scriptParent);

Однако, если я загружаю xml извне, используя следующий код в моем файле mxml:

<fx:Declarations>
    <fx:XML  xmlns=""  id="script" source="script.xml"/>
</fx:Declarations>

, то результаты этой печати в конечном итоге отбрасывают пространство имен xsi.Что я могу сделать, чтобы сохранить его?Спасибо.

var scriptParent:XML = <xml></xml>;
scriptParent.appendChild(script);
trace ("scriptParent " + scriptParent);

1 Ответ

0 голосов
/ 21 февраля 2011

Я сталкивался с этой проблемой в прошлом и, хотя боюсь, что не могу ответить, почему это происходит, похоже, что Flex удаляет любые «неиспользуемые» пространства имен из импортированного XML (т.е. ни один дочерний узел не ссылается на пространство имен напрямую).Следующий пример, аналогичный вашему вопросу, демонстрирует это:

Text.xml:

<?xml version="1.0"?>
<objects xmlns="http://www.spicefactory.org/parsley" xmlns:myTestNs="http://test.com" xmlns:myUnusedNs="http://testUnused.com">
    <myTestNs:test>Test text node</myTestNs:test>
</objects>

Используя тот же метод, который вы описали выше, вывод будет следующим:

<xml>
  <objects xmlns="http://www.spicefactory.org/parsley">
    <myTestNs:test xmlns:myTestNs="http://test.com">Test text node</myTestNs:test>
  </objects>
</xml>

Если кто-то может объяснить, почему это происходит, я был бы заинтересован, так как есть много случаев использования, когда мы хотим поддерживать все объявления пространства имен, даже если они не используются в настоящее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...