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?
Merci!!!