2008-12-19 8 views
0

Y a-t-il un moyen de changer le type de contenu d'un document XML, dans le document XML?Y a-t-il un moyen de changer le type de contenu d'un document XML, dans le document XML?

Je travaille avec un très vieux système qui repasse le HTML (et nous essayons de le faire renvoyer du XML). Je le récupère de XMLHttpRequest, et j'ai remarqué en utilisant netcat qu'il ne renvoie aucun en-tête de type content.

Lorsque je reçois le XMLHttpRequest.responseXML, le responseText existe mais le responseXML est null.

J'ai déjà vérifié le XML retourné pour voir s'il est bien formé et qu'il semble l'être (c'est un document très court).

+0

Qu'entendez-vous par type de contenu? MIME, DTD, XSchema ou quoi? –

+0

Les en-têtes http, Content-type: text/xml ou application/xml – leeand00

Répondre

1

Non. Le Content-Type comme vous le dites (dans les commentaires à votre question) fait partie des en-têtes HTTP.

Et HTTP est le simple moyen de transport pour (par exemple) des documents XML. Ils sont payload, ils ne savent rien sur les en-têtes HTTP, donc ils ne peuvent pas les changer. Ce que vous voulez probablement dire est "Existe-t-il un équivalent à <meta http-equiv="... en XML Non, même le HTML ne peut pas changer les en-têtes HTTP, il ne peut que faire que l'agent utilisateur se comporte différemment. Le fichier HTML a été sauvegardé sur le disque et, au chargement, aucun en-tête n'est disponible pour l'agent utilisateur

En XML, toutes les informations nécessaires figurent dans l'instruction de traitement (<?xml version="1.0" encoding="UTF-8"?>) en haut du fichier. nécessaire pour charger/afficher correctement.

0

n °

au moment où l'UA pourrait obtenir à une telle étiquette, il aurait déjà dû décider quel type de document c'est l'analyse.

0

I figured it out, il est une question de prendre la chaîne xhr.responseText et la création d'un document XML de celui-ci:

function createDOMFromString(sXml){ 

    var browser = navigator.appName; 
    var oXmlDom = null; 

    // IE Implementation... 
    if(browser == "Microsoft Internet Explorer") { 
     oXmlDom=new ActiveXObject("Microsoft.XMLDOM"); 
     oXmlDom.async="false"; 
     oXmlDom.loadXML(sXml); 
    } 
    // FF Implementation... 
    else { 
     var oParser = new DOMParser(); 
     oXmlDom = oParser.parseFromString(sXml, "text/xml"); 
    } 
    // TODO: If we need it Safari implementation. 

    return oXmlDom; 
} 

Cheers!

+0

Hé, je ne peux pas vérifier ma réponse ... et c'est celle qui a fonctionné! – leeand00

+0

Personne ne peut vérifier sa propre réponse (ou tout le monde le ferait). Honnêtement, ne devriez-vous pas avoir posé la question plus clairement en premier lieu? Votre montage a fait toute la différence, la question était proche de l'inintelligible dans son état d'origine. S'il vous plaît ne vous attendez pas à ce que vos lecteurs aient des pouvoirs visionnaires ... – Tomalak