Balise xml vide [Résolu]

cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 08:01 - Dernière réponse : cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention
- 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
Afficher la suite 

Votre réponse

10 réponses

cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 10:27
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Guigar
cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 10:32
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Guigar
cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 11:41
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Guigar
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 8 juin 2011 à 08:44
0
Utile
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
Commenter la réponse de Renfield
cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 09:49
0
Utile
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
Commenter la réponse de cs_Guigar
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 8 juin 2011 à 09:55
0
Utile
quand je lis une balise du type


lis avec quoi ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 10:01
0
Utile
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
Commenter la réponse de cs_Guigar
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 8 juin 2011 à 10:02
0
Utile
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
Commenter la réponse de Renfield
cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 10:03
0
Utile
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"
Commenter la réponse de cs_Guigar
cs_Guigar 105 Messages postés mercredi 12 novembre 2008Date d'inscription 8 juin 2011 Dernière intervention - 8 juin 2011 à 10:03
0
Utile
"possible de repasser sur ton fichier" ???
Commenter la réponse de cs_Guigar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.