Le caractère ‘:’, valeur hexadécimale 0x3A, ne peut pas être inclus dans un nom

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.

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;