In meiner Flex-Anwendung rufe ich mehrere .NET WebServices auf, die XML zurückgeben. Diese WebServices geben jedoch alle XML mit einem Namespace zurück. Ich kann die XML-Lese/parsen ohne den Namespace zu verweisen, was bedeutet, dass ich die folgenden Codezeilen in jeder Klasse gehören, die eine WebService nennt:Wie kann ich einen Namespace aus einem XML-Dokument entfernen?
private namespace PCRWebServices = "xxx.somename.web.services";
use namespace PCRWebServices;
Ich möchte die Notwendigkeit für diese statische Aufladung beseitigen/hart -codierte Logik, um einfach XML von einem WebService zu lesen.
Gibt es eine Möglichkeit, den Namespace aus dem XML zu "entfernen", so dass ich es als "normales" XML-Dokument lesen kann?
Ich habe eine Klasse, die ich für jeden WebService Aufruf verlängern, die Ergebnisse und Fehler behandelt:
private function faultHandler(event:FaultEvent):void
{
}
private function resultHandler(event:ResultEvent):void
{
var resultXML:XML = new XML(event.result);
}
Ich mag würde eine gewisse Logik zu dem Ergebnis Handler „konvertieren“, um die XML hinzuzufügen. Irgendwelche Ideen?
Das, was trace(resultXML)
kehrt:
<GetDataResult xmlns="xxx.somename.web.services">
<DataSet>
<Data>
<IdNmb>15</IdNmb>
<NameTxt>Hello</NameTxt>
</Data>
<Data>
<IdNmb>16</IdNmb>
<NameTxt>World</NameTxt>
</Data>
<Status>
<Status>Success</Status>
</Status>
<ReturnCode>
<ReturnCode>0</ReturnCode>
</ReturnCode>
</DataSet>
</GetDataResult>
Es wird nur ein Namensraum entfernt ... –
Danke. Ich sehe keinen Bedarf für den Downvote, da dies meine Frage zu "A namespace" beantwortet hat. Ich werde deine Antwort trotzdem verbessern. –
Nur ein bisschen kürzer: var xmlString: String = xml.toXMLString(); \t \t \t xmlString xmlString.replace = (/ Xmlns = "[^"] + "/ g, ''); \t \t \t return new XML (xmlString); – Nux