Я пытаюсь добавить узел в файл XML, но не могу понять. Любая помощь будет высоко оценена. Используя VBA, я пытаюсь добавить "<Poi />"
под "<Song ..>"
в моей файловой базе данных. xml - увидеть ожидаемый результат ниже
Мне удалось создать узел, но он имеет неправильное форматирование: пробелы и возврат каретки не добавляются правильно.
Вот пример:
Исходная база данных (перед использованием любого кода):
<?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>
Для этой базы данных требуется: 1 пробел перед "<Song .."
и 2 пробела перед остальными "<Tags ..", "<Infos..", "<Poi..."
Модифицированная база данных (после обработки кода) - Неверный результат, см. Ожидаемый результат ниже
<?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>
Ожидаемый результат:
<?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>
Примененный код:
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
Как изменить код, чтобы иметь правильное форматирование ?