9
votes

C #: xmltextwriter.writeelementsString échoue sur des chaînes vides?

J'utilise xmltextwriter code> et son EritelementsRing (code> méthode, par exemple: xxx pré>

La sortie XML attendue est la suivante: P > xxx pré>

Toutefois, si, par exemple, l'introduction est vide, le résultat XML i get comme suit: p> xxx pré>

tandis que je m'y attendrais Être: P>

<User>
    <Username>value</Username>
    <Email></Email>
</User>


0 commentaires

4 Réponses :


5
votes

Il n'échume pas est juste un raccourci pour


2 commentaires

Il est possible de le forcer à produire ?


Si tel est un problème, vous avez tous droit de crier à quiconque vous oblige à écrire intégralement les tags; Ils doivent suivre des spécifications XML de base.



22
votes

Votre sortie est correcte. Un élément sans contenu doit être écrit comme code>.

Vous pouvez forcer l'utilisation de la balise complète en appelant greatfulendelement () p>

writer.WriteStartElement("User");
writer.WriteFullElementString("Username", inputUserName);
writer.WriteFullElementString("Email", inputEmail);
writer.WriteEndElement();


2 commentaires

J'ai utilisé exactement la même solution que vous avez fournie et la méthode WarkefulendElement () ne semble pas fonctionner ... Methinks Cette méthode est défectueuse.


J'ai trouvé une solution de contournement en C #. Si le (string.length == 0), remplacez ensuite la chaîne vide avec un nouveau caractère d'échappement, c'est-à-dire «\ n»



2
votes

Votre code devrait être:

using (XmlWriter writer = XmlWriter.Create("filename.xml"))
{
    writer.WriteStartElement("User");
    writer.WriteElementString("Username", inputUserName);
    writer.WriteElementString("Email", inputEmail);
    writer.WriteEndElement();
}


0 commentaires

0
votes

laissant cela ici au cas où quelqu'un en a besoin; Étant donné qu'aucune des réponses ci-dessus ne l'a résolu pour moi, ou semblait trop excéder.

w.Formatting = Formatting.Indented;


0 commentaires