Je vois quelque chose de très étrange se produire dans une application Flex que je maintiens.La journalisation provoque-t-elle une rupture de l'analyse XML?
Je l'ai parcouru en supprimant tous les appels à trace() et en le remplaçant par des appels dans l'infrastructure de journalisation (en utilisant le contenu mx.logging intégré). Après avoir fait cela, un code d'analyse XML a soudainement cassé, et je ne peux pas pour la vie de moi comprendre pourquoi.
est ici le code:
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 */
}
}
Avec le code comme ceci, avec cet appel log.debug() à la place, j'obtiens l'erreur suivante sur la ligne cityXML est définie:
TypeError: Error #1088: The markup in the document following the root element must be well-formed.
Si je commente l'appel LOG.debug() cela fonctionne très bien.
Je pensais qu'il y avait peut-être un peu de bizarrerie avec la cible de journal personnalisée que j'avais créée, alors j'ai supprimé cela. Actuellement, la seule cible utilisée est la cible de trace intégrée.
Est-ce que quelqu'un sait ce qui se passe? Pourquoi un appel de journalisation rompt l'analyse XML? Je ne peux pas penser à tout ce qu'il pourrait faire pour le briser.
EDIT:
Je l'ai fait d'autres tests, et il est juste obtenir plus étrange.
J'ai changé le code basé sur le commentaire de David pour utiliser xml..city [0] au lieu du nouveau XML (xml..city) pour les deux affectations. Cela a provoqué l'exception un peu plus tard (dans un code non affiché ci-dessus où il fait référence à cityXML). J'ai donc essayé de passer dans le débogueur et j'ai remarqué quelque chose d'étrange. La valeur de cityXML était null, alors que stateXML obtenait la valeur correcte. En regardant l'objet xml dans le débogueur a montré toutes les données correctes, donc cela aurait dû être bien. Comme un test aléatoire, j'ai réarrangé le code de sorte que stateXML a été chargé en premier. Après cela, stateXML est nul, alors que cityXML est correct. Donc, quelle que soit l'affectation qui se produit immédiatement après l'échec du journal, mais quoi qu'il arrive après cela a bien fonctionné.
est ici le (un peu aseptisé) XML qui est en cours d'analyse:
<?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>
Pouvez-vous poster le XML que vous essayer de vous connecter? – typeoneerror