Bonjour,

J'essai en VBA d'ajouter <Poi /> sous <Song ..> dans un fichier XML - voir le résultat attendu plus bas

Fichier database.xml d'origine (avant tout code) :

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<VirtualDJ_Database Version="8.4">
 <Song FilePath="\Music_Path\Author_1 - Title_1.mp3">
  <Tags Author="Author_1" Title="Title_1" Bpm="2.068965" Flag="1"/>
  <Infos SongLength="191.295000" FirstSeen="1584402618"/>
 </Song>
</VirtualDJ_Database>

Cette base doit avoir: 1 espace avant <Song .. et 2 espaces avant les autres <Tags ..>, <Infos..>, <Poi...>.

Fichier database.xml modifié (après exécution du code) - mauvais résultat, voir le résultat attendu plus bas

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?><VirtualDJ_Database Version="8.4">
 <Song FilePath="\Music_Path\Author_1 - Title_1.mp3">
  <Tags Author="Author_1" Title="Title_1" Bpm="2.068965" Flag="1"/>
  <Infos SongLength="191.295000" FirstSeen="1584402618"/>
 <Poi/></Song>
</VirtualDJ_Database>

Résultat attendu :

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<VirtualDJ_Database Version="8.4">  -------------------CARRIAGE RETURN BEFORE
 <Song FilePath="\Music_Path\Author_1 - Title_1.mp3">
  <Tags Author="Author_1" Title="Title_1" Bpm="2.068965" Flag="1"/>
  <Infos SongLength="191.295000" FirstSeen="1584402618"/>
  <Poi/> -----------(ADDED NODE----------------------- 2 SPACES BEFORE
 </Song> ----------------------------------------------  CARRIAGE RETURN + 1 SPACE BEFORE
</VirtualDJ_Database>

Code utilisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub ADD_NODE()
 
    Dim oXMLFileMod As MSXML2.DOMDocument60
    Set oXMLFileMod = New MSXML2.DOMDocument60
    oXMLFileMod.preserveWhiteSpace = True
    oXMLFileMod.Load "M:\VirtualDJ\database.xml"
 
    ------ (select a parent node)
Set ParentNode = oXMLFileMod.SelectSingleNode("/VirtualDJ_Database/Song[1]")
 
    ----- (add a new childNode)
Set childNode = oXMLFileMod.createElement("Poi")
ParentNode.appendChild (childNode)
 
oXMLFileMod.Save "M:\VirtualDJ\database.xml"
 
End Sub