Balise xml vide

Résolu
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011 - 8 juin 2011 à 08:01
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011 - 8 juin 2011 à 11:41
Bonjour, j'ai fait un programme qui viens écrire un fichier xml, qui peut contenir des balises vide.

J'utilise ceci :


Dim type_encodage As System.Text.Encoding
type_encodage = System.Text.Encoding.GetEncoding(28591)
Dim FichierXML As New System.Xml.XmlTextWriter("peutimporte", type_encodage)
FichierXML.Formatting = Xml.Formatting.Indented

quand je crée une balise vide j'obtient quelque chose du genre :




or j'aimerais qu'il m'écrive ma balise plutot comme ceci :



ya t'il une subtilité ?

Merci d'avance

10 réponses

cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 10:27
j'ai trouvé une solution :

pour les balises il n'y a rien a faire de spécifique, buffer passe a nothing

pour les balises on peut utiliser reader.IsEmptyElement qui passe a TRUE si il n'y a rien
3
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 10:32
admettons qu'on est


l'algo complet est donc :

reader.ReadStartElement("BALISE")
buffer = reader.ReadString

If String.IsNullOrEmpty(buffer) Or reader.IsEmptyElement Then
'traitement de balise vide
End If


If Not reader.IsEmptyElement Then 'nécéssaire car on referme l'élément que s'il n'est pas vide
reader.ReadEndElement()
End If
3
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 11:41
il est aussi possible d'utiliser ceci

reader.ReadStartElement("BALISE")
reader.MoveToContent() 'important
buffer = reader.ReadString

voila l'algo complet


Dim endelement As Boolean = True
Dim buffer As String


reader.ReadStartElement("BALISE")
reader.MoveToContent()
buffer = reader.ReadString

If String.IsNullOrEmpty(buffer) Then
'traitement balise vide
endelement = False
else
'traitement balise avec data
End If

If endelement = True Then
reader.ReadEndElement()
End If
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 juin 2011 à 08:44
j'aimerais qu'il m'écrive


Caprice ?

parce que je ne vois pas l'interêt, là...


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 09:49
caprice ? Non

parce qu'ensuite j'ai un autre probleme

quand je lis mon fichier xml qui contient une balise du type tout se passe bien

quand je lis une balise du type dans le buffer il me met un truc du genre : " " que je ne sais pas traiter

merci de me donner une réponse constructive
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 juin 2011 à 09:55
quand je lis une balise du type


lis avec quoi ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 10:01
Using reader As XmlReader = XmlReader.Create(My.Application.Info.DirectoryPath & ".\config\config.xml")
Dim buffer As String
reader.ReadStartElement("BALISE")
buffer = reader.ReadString


quand ma balise est de type

j'ai buffer =nothing

quand ma balise est de type

j'ai buffer = " " (plein d'espace

j'ai essayer avec une autre méthode de lecture de xml :

Dim readerxml As New System.Xml.XmlTextReader("My.Application.Info.DirectoryPath & ".\config\config.xml")

le résultat est exactement pareil

J'espere avoir donné assez d'info

Merci d'avance
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 juin 2011 à 10:02
possible de repasser sur ton fichier, par la suite, avec une RegExp.

il existe peut etre un parametre dans les XmlWriter et autres, mais je ne sais pas quoi.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 10:03
ps dans le code ci dessus entre le

Using reader As XmlReader = XmlReader.Create(My.Application.Info.DirectoryPath & ".\config\config.xml")
Dim buffer As String

et le
reader.ReadStartElement("BALISE")
buffer = reader.ReadString

je n'ai pas mi tout le code, il y a bien entendu des reader.readerstarelement("quelquechose")

je ne l'ai pas mis tout simplement car tout le reste fonctionne (la lecture des balises remplies) il n'y a que les balises vident qui "bugguent"
0
cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011
8 juin 2011 à 10:03
"possible de repasser sur ton fichier" ???
0
Rejoignez-nous