L'élément racine est manquant erreur pour .net XmlDocument.load()
Salutations à tous.
J'obtiens un asp.net l'erreur "de l'élément Racine est manquant" lorsque je charge les résultats d'un RESTE de demande dans un XmlDocument. La même demande RESTE a l'air bien et renvoie des résultats valides lorsque je l'exécute en utilisant le Firefox addon "RESTTEST". Mais l'erreur s'affiche dans la C#.net code-behind. Personne ne sait ce qui peut provoquer cela? Voici le code correspondant:
HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
HttpStatusCode statusCode = response.StatusCode;
Stream responseData = response.GetResponseStream();
StreamReader sr = new StreamReader(responseData);
XmlTextReader reader = new XmlTextReader(sr);
XmlDocument doc = new XmlDocument();
doc.Load(sr); //here is where the error occurs.
Mon but est de charger les résultats de la le RESTE demande dans une traverse-mesure XML modèle de données à laquelle je peux ensuite récupérer les éléments et leurs valeurs de.
Lorsque j'utilise ce code, j'obtiens les résultats attendus. Quelle est la différence?
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: //The node is an Element.
Response.Write("Element Name: " + reader.Name);
while (reader.MoveToNextAttribute()) //Read attributes.
Response.Write(" " + reader.Name + "='" + reader.Value + "'");
Response.Write("<br />");
break;
case XmlNodeType.Text: //Display the text in each element.
Response.Write("Element value: " + reader.Value);
Response.Write("Read key=" + reader.Name + ", value=" + reader.Value + "<br/>");
break;
case XmlNodeType.EndElement: //Display end of element.
Response.Write("<br />");
break;
}
}
- Pouvez-vous poster le Xml que vous obtenez de retour du RESTE de TEST afin que nous puissions globe oculaire qui.
- C'est probablement que le XML n'est pas XML ou malformé. Pouvez-vous nous donner un exemple des résultats du RESTE de demande?
Vous devez vous connecter pour publier un commentaire.
Il ressemble le XML est un fragment plutôt que entièrement formé document XML-- c'est pourquoi elle n'a pas la racine. Pour obtenir que cela fonctionne, vous devez configurer l'objet XMLDocument pour accepter des fragments...
Essayez d'utiliser
sr.ReadToEnd()
pour voir ce qui est retourné à vous. C'est probablement une chaîne vide.Aussi, vous devriez être en utilisant
XmlReader.Create
si vous êtes en utilisant .NET 2.0 ou supérieur;XmlTextReader
est obsolète.Voir Un RESTE de la Bibliothèque du Client pour .NET, Partie 1 pour un exemple qui utilise la Sérialisation XML. (désolé, il n'y a pas de partie 2).