2010-02-13 6 views
1

Je suis de retour à asp avec XML manupulation. fichier initial:XML dans ASP Vbscript classique

<?xml version="1.0" ?> 
<root> 
    <sport/> 
</root> 

ceci est ma fonction

Public Function DefinitFunction(x,z) 


Dim text 
Dim Root 
Dim NodeList 

    text = "<Definition>" ---<x> </x> <z> </z> --</Definition> " 
    text = text & "<x><![CDATA["&x&"]]> </x>" 
    text = text & "<z> </z>"   
    text = text & "</Definition>" 

Set Root = objDoc.documentElement 
Set NodeList = Root.getElementsByTagName("sport") 

NodeList.appendChild text 

objDoc.Save strFile 

end function 
' Private strFile, objDoc are class object 

Je souhaite modifier dynamiquement la toute chose. J'ai donc une fonction: DefinitFunction(x,z) qui concaténer une chaîne et append <Definition> ---<x> </x> <z> </z> --</Definition> dans mon dossier juste après le nœud <sport> à la fin cela devrait être mon résultat:

<?xml version="1.0" ?> 
<root> 
    <sport> 
    <Definition> 
     ---<x> </x> <z> </z> -- 
     </Definition> 
    </sport> 
</root> 

Ce ne fonctionne pas. Y a-t-il une meilleure façon d'accomplir cela?

+0

Son pas tout à fait clair à partir de votre exemple de code, mais utilisez-vous l'objet MSXML ou autre chose? – AnonJr

Répondre

1

Vous ne pouvez pas ajouter du texte directement .. vous devez convertir au noeud XML premier ..

Set newXML = CreateObject("Microsoft.XMLDOM") 
newXML.async = False 
newXML.loadXML("<root>" & text & "</root>") 

NodeList.appendChild(newXML.documentElement.selectSingleNode("/Definition")) 
+0

Non Type d'erreur: exécution Microsoft VBScript (0x800A01B6) objet ne prend pas en charge cette propriété ou méthode: 'NodeList.appendChild' – FasoService

+1

ne pas utiliser 'Root.getElementsByTagName ("sport")' pour obtenir au sport .. utilisation 'Root.selectSingleNode (" sport ")'. La première renvoie une liste de nœuds (* à laquelle vous ne pouvez pas ajouter directement *) la seconde renvoie un nœud (* qui supporte appendChild .. *) –

+0

Ceci est un plus.thanks. Cependant, il append en dehors du nœud sport --- - au lieu de --- - FasoService