Jayme65
Messages postés60Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention26 mars 2019
-
16 oct. 2012 à 16:45
Jayme65
Messages postés60Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention26 mars 2019
-
16 oct. 2012 à 20:59
Bonjour,
J'ai un document XML qui est "bindé" à des textbox (WPF).
Dim systemdata As XmlDataProvider = New XmlDataProvider()
Private Sub MainWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
systemdata.Source = New Uri("fichier.xml")
systemdata.XPath = "Base"
Grid1.DataContext = systemdata
End Sub
Et il est sauvé ainsi:
systemdata.Document.Save("fichier.xml")
Par ailleurs, dans le code VB, je dois détecter les éléments vides à l'intérieur de ce même fichier XML. J'ouvre donc le fichier XML et je lis l'élément dont j'ai besoin et le place dans une variable:
Dim sysname As String = ""
Dim XmlReader As New XmlTextReader("Fichier.xml")
While XmlReader.Read()
If (XmlReader.NodeType = XmlNodeType.Element) Then
If (XmlReader.Name = "Name") Then
sysname = XmlReader.ReadString()
End If
End If
A la fin de l'élément, je voudrais vérifier de quoi il était rempli..et notamment si il est vide:
If (XmlReader.Name "Name" And XmlReader.NodeType XmlNodeType.EndElement) Then
If sysname = String.Empty Then
MsgBox("Element Vide", 48, "Attention")
End If
End If
End While
XmlReader.Close()
Là, je me rend compte que les éléments vides ne sont pas détectés.
En regardant le fichier XML de plus près, je me rend compte que lorsqu'il est sauvé (systemdata.Document.Save("fichier.xml"), il y a un reformatage qui est effectué!
Un élément vide de ce type:
<Name></Name>
se voit sauvé en:
<Name>
</Name>
Il y a donc vraisemblablement un CRLF (line break carriage return)...qui fait qu'il n'est pas détecté comme ""/String.Empty!?
Ma question est donc la suivante:
Comment puis-je prévenir le "reformatage" de mon fichier XML...et maintenir les éléments vides sur une seule ligne?
Jayme65
Messages postés60Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention26 mars 20192 16 oct. 2012 à 20:59
J'ai trouvé la réponse: j'enlève à la variable les caractères superflus
Dim sysname As String = ""
Dim XmlReader As New XmlTextReader("Fichier.xml")
While XmlReader.Read()
If (XmlReader.NodeType = XmlNodeType.Element) Then
If (XmlReader.Name = "Name") Then
sysname = XmlReader.ReadString()
sysname = sysname.Replace(vbCr, "").Replace(vbLf, "").Replace(" ", "")
End If
End If