J’ai un fichier XML qui contient son élément comme
Str
Lorsque j’essaie d’y accéder en utilisant le code:
XElement tempElement = doc.Descendants(XName.Get("ab:test")).FirstOrDefault();
Il me donne cette erreur:
System.Web.Services.Protocols.SoapException: le serveur n’a pas pu traiter la demande. —> System.Xml.XmlException: le caractère ‘:’, valeur hexadécimale 0x3A, ne peut pas être inclus dans un nom.
- CS1617: Option invalide ‘6’ pour / langversion; doit être ISO-1, ISO-2, 3, 4, 5 ou par défaut
- Analyse des arguments de ligne de commande?
- Comment LINQPad référence-t-il d’autres classes, par exemple les livres dans les exemples LINQ in Action?
- applications pratiques des opérations binarys
- Membres des données publiques vs Getters, Setters
Comment dois-je y accéder?
Si vous souhaitez utiliser des espaces de noms, LINQ to XML vous facilite la tâche:
XNamespace ab = "http://whatever-the-url-is"; XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();
Recherchez une section xmlns:ab=...
dans votre document pour savoir à quelle URI d’espace de noms “ab” fait référence.
Essayez de mettre votre espace de noms dans {
… }
comme ceci:
ssortingng xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";
J’avais la même erreur. J’ai trouvé que j’ajoutais du code …
var ab = "http://whatever-the-url-is";
… mais ab était déterminé à être une chaîne. Cela a causé l’erreur signalée par OP. Au lieu d’utiliser le mot clé VAR, j’ai utilisé le type de données actuel XNamespace …
XNamespace ab = "http://whatever-the-url-is";
… et le problème a disparu.
Il y a une surcharge de la méthode Get que vous pourriez vouloir essayer qui prend en compte l’espace de noms. Essaye ça:
XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();
Essayez d’obtenir un espace de noms à partir du document
var ns = doc.Root.Name.Namespace;