Я вижу что-то очень странное в приложении Flex, которое я поддерживаю.Журналирование, вызывающее разбор XML-синтаксиса?
Я прошел через него, удалив все вызовы trace() и заменив его на вызовы в фреймворк регистрации (используя встроенный материал mx.logging). После этого некоторые XML синтаксический код внезапно сломался, и я не могу для жизни понять, почему.
вот код:
private var loader:URLLoader; // created elsewhere
private function handleComplete(event:Event):void {
default xml namespace = com;
xml = XML(loader.data);
var response:XML = new XML(xml..raniResponse);
//now handles a null response object
if(xml && response.children().length() > 0) {
LOG.debug("Got response.");
var cityXML:XML = new XML(xml..city);
var stateXML:XML = new XML(xml..stateProv);
/* Some extra processing is done here */
}
}
С кодом, как это, с этим log.debug() вызова на месте, я получаю следующее сообщение об ошибке на линии cityXML определяется:
TypeError: Error #1088: The markup in the document following the root element must be well-formed.
Если я прокомментирую вызов LOG.debug(), он отлично работает.
Я думал, что может быть какая-то странность с созданной мной целевой целевой лог, поэтому я удалил ее. В настоящее время единственной целевой целью является встроенная трассировка.
Кто-нибудь знает, что происходит? Почему вызов журнала прерывает разбор XML? Я не могу думать ни о чем, что это могло бы сделать, это сломало бы его.
EDIT:
Я сделал еще несколько тестов, и это просто получать страннее.
Я изменил код на основе комментария Дэвида, чтобы использовать xml..city [0] вместо нового XML (xml..city) для обоих назначений. Это заставило исключение произойти чуть позже (в некотором коде, который не показан выше, где он ссылается на cityXML). Поэтому я попытался пройти через отладчик и заметил что-то странное.
cityXML был установлен в null, а stateXML получал правильное значение. Глядя на объект xml в отладчике, он показал все правильные данные, поэтому все должно быть хорошо. В качестве случайного теста я перестроил код так, чтобы сначала загружался stateXML. После этого stateXML имеет значение null, а cityXML - правильно.
Итак, какое бы назначение не было выполнено сразу после сбоя журнала, но что бы ни случилось после этого, это нормально.
Вот (несколько продезинфицировать) XML, который разбираемый:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<com:MyCompanyRANIv.01 xmlns:com="com:myc:rani:1:0:message" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<com:raniResponse>
<com:telephonyInfo>
<com:countryCode>1</com:countryCode>
<com:telephoneNumber>14121234567</com:telephoneNumber>
</com:telephonyInfo>
<com:geoInfo>
<com:coordinates>
<com:latLon>
<com:lat>40.49</com:lat>
<com:lon>-79.92</com:lon>
</com:latLon>
</com:coordinates>
<com:countryInfo>
<com:country>
<com:featureName>United States</com:featureName>
<com:featureTypeDescription>United States of America</com:featureTypeDescription>
<com:featureCode value="US" system="ISO 3166" family="Country Code" systemVer="1-alpha-2" />
</com:country>
</com:countryInfo>
<com:stateProvInfo>
<com:stateProv>
<com:featureName>PENNSYLVANIA</com:featureName>
<com:featureTypeDescription xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
<com:featureCode family="US State Code" system="FIPS State Alpha Code" systemVer="" value="PA" />
</com:stateProv>
</com:stateProvInfo>
<com:regionInfo>
<com:region>
<com:featureName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
<com:featureTypeDescription xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
<com:featureCode family="" system="" systemVer="" value="" />
</com:region>
</com:regionInfo>
<com:countyParishInfo>
<com:countyParish>
<com:featureName>ALLEGHENY</com:featureName>
<com:featureTypeDescription xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
<com:featureCode family="" system="" systemVer="" value="" />
</com:countyParish>
</com:countyParishInfo>
<com:cityInfo>
<com:city>
<com:featureName>PITTSBURGH</com:featureName>
<com:featureTypeDescription xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
<com:featureCode family="" system="" systemVer="" value="" />
</com:city>
</com:cityInfo>
<com:buildingInfo>
<com:building>
<com:featureName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
<com:featureTypeDescription xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</com:building>
</com:buildingInfo>
<com:streetAddress address="" />
</com:geoInfo>
<com:services host="false" wireless="false" other="false" />
</com:raniResponse>
<com:raniRequest>
<com:fullyQualifiedTelephoneNumber>14121234567</com:fullyQualifiedTelephoneNumber>
</com:raniRequest>
</com:MyCompanyRANIv.01>
</soapenv:Body>
</soapenv:Envelope>
Вы можете разместить XML вы пытаться войти? – typeoneerror