Ajouter un enfant à l'entrée de nœud spécifique dans le fichier xml dans vbscipt
J'ai un fichier xml DataConfiguration.xml avec cette entrée
<DataSource>
<localdata>
<add context="Localization">
<parameter name="timeout" type="int" defaultvalue="60"/>
<parameter name="address" type="string" defaultvalue="192.168.9.45" />
<parameter name="port" type="int" defaultvalue="6789"/>
</add>
</localdata>
</DataSource>
J'ai besoin d'ajouter une autre entrée pour "localdata" de sorte qu'il serait
<DataSource>
<localdata>
<add context="Localization">
<parameter name="timeout" type="int" defaultvalue="60"/>
<parameter name="address" type="string" defaultvalue="192.168.9.45" />
<parameter name="port" type="int" defaultvalue="6789"/>
</add>
<add context="General">
<parameter name="timeout" type="int" defaultvalue="60"/>
<parameter name="address" type="string" defaultvalue="192.168.9.478" />
<parameter name="port" type="int" defaultvalue="5674"/>
</add>
</localdata>
</DataSource>
Comment pourrais-je ajouter ceci dans le vbscript?
Mon code Actuel
'created xml file object
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.async = False
xmlDoc.preserveWhiteSpace= True
xmlDoc.load("DataConfiguration.xml")
Dim entry
entry = "<add context=""General"">" & _
<parameter name=""timeout"" type=""int"" defaultvalue=""60""/>" & _
<parameter name=""address"" type=""string"" defaultvalue=""192.168.9.478"" />" & _
<parameter name=""port"" type=""int"" defaultvalue=""5674""/>"& _
</add>"
Set NewNode = xmlDoc.createElement(entry)
Set ElemList = xmlDoc.getElementsByTagName("localdata")
ElemList.appendChild(NewNode)
Mais ce qui donne à l'erreur
Ce nom ne peut pas contenir < le caractère" à " Définir NewNode = xmlDoc.createElement(entrée)
Également la ElemList.appendChild(NewNode) ne fonctionne pas.
Vous devez vous connecter pour publier un commentaire.
XmlDocument.CreateElement accepte trois paramètres: un type de nœud, un nœud de nom, et d'un espace de noms.
Dans votre exemple, car votre enfant de l'élément nommé "ajouter", c'est un élément (type==1), et il est le cadre global de la espace de noms xml, vous appelez
xmlDoc.CreateElement(1, "add", "")
.Qui vous donne un élément vide. Pour insérer les données que vous voulez (l'
Context="General"
attribut, et tous les éléments d'enfant), vous pourriez alors avoir besoin de faire des appels successifs à la manipulation du DOM méthodes, ajouter à chaque élément enfant, chaque attribut, et ainsi de suite. Assez laborieux.Mais vous avez déjà le fragment xml comme une chaîne de caractères. Ainsi, au lieu de la création de l'élément en utilisant les méthodes du DOM, ce que vous pouvez faire est de créer un 2ème XmlDocument et dites-lui pour obtenir son contenu à partir de la chaîne. Puis, prenez le documentElement de cette 2ème doc. Appelez ensuite appendChild sur le nœud approprié dans le premier doc, en passant le documentElement à partir de la 2ème doc.
quelque chose comme ceci:
...où le PrettyPrintXml fonction est définie comme ceci:
La sortie de cette, pour moi, est: