L'ajout de nœuds enfants à l'aide de c# Xdocument classe
J'ai un fichier xml comme indiqué ci-dessous.
<?xml version="1.0" encoding="utf-8"?>
<file:Situattion xmlns:file="test">
<file:Properties>
</file:Situattion>
Je voudrais ajouter l'élément enfant de fichier:Personnage à l'aide des xDocument.De sorte que mon xml final serait comme donné ci-dessous
<?xml version="1.0" encoding="utf-8"?>
<file:Situattion xmlns:file="test">
<file:Characters>
<file:Character file:ID="File0">
<file:Value>value0</file:Value>
<file:Description>
Description0
</file:Description>
</file:Character>
<file:Character file:ID="File1">
<file:Value>value1</file:Value>
<file:Description>
Description1
</file:Description>
</file:Character>
</file:Characters>
Code en c# j'ai essayé d'utiliser Xdocument classe est donnée ci-dessous.
XNamespace ns = "test";
Document = XDocument.Load(Folderpath + "\\File.test");
if (Document.Descendants(ns + "Characters") != null)
{
Document.Add(new XElement(ns + "Character"));
}
Document.Save(Folderpath + "\\File.test");
À la ligne "Document.Add(new XElement(ns + "Character"));
", j'obtiens une erreur:
"This operation would create an incorrectly structured document."
.
Comment puis-je ajouter le nœud sous "file:Characters
".
avez-vous regardé dans l'aide de
Il n'y a pas besoin d'utiliser XPath ou XQuery ici, et je ne crois pas qu'ils avaient même rendre le code plus simple.
XPATH
ou XQuery
aussi regarder la ->Related
Lien situé à droite de cette page actuelle, beaucoup d'exemples pour vous d'enquêter surIl n'y a pas besoin d'utiliser XPath ou XQuery ici, et je ne crois pas qu'ils avaient même rendre le code plus simple.
OriginalL'auteur TVSuser1654136 | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
Vous essayez d'ajouter un supplément de
file:Character
élément directement dans la racine. Vous ne voulez pas faire, que vous voulez ajouter dans lefile:Characters
élément, sans doute.Également noter que
Descendants()
sera jamais return null - il sera de retour une séquence vide si il n'y a aucun élément correspondant. Donc, vous voulez:Notez que j'ai utilisé plus classique de l'appellation,
Path.Combine
, et également déplacé leSave
appel de sorte que vous aurez seulement à l'enregistrement si vous avez fait une modification au document.une erreur "Le caractère':', valeur hexadécimale 0x3A, ne peut pas être inclus dans un nom."
est
XDocument
. Et si vous obtenez cette erreur, qui suggère que vous êtes en utilisant"file:Character"
que le nom local au lieu dens + "Character"
, ou quelque chose de similaire. Vous ne devriez pas avoir ce problème dans le code que j'ai fourni.Comment puis-je ajouter un fichier:ID="File0" et <fichier:Valeur>value0</fichier:Valeur> à l'aide du code ci-dessus
Utilisation
new XAttribute(ns + "ID", "File0")
etnew XElement(ns + "Value", "value0")
. Fondamentalement, vous utilisezns
pour l'espace de noms - vous ne pas mettre les alias dans la localname.OriginalL'auteur Jon Skeet
Remarque: je n'ai pas compris l'espace de noms pour des raisons de concision. Vous devez ajouter les.
OriginalL'auteur Prash