2009-04-14 19 views
1

Dans TCL, si vous utilisez le package DOM (disponible dans la distribution ActiveState), vous pouvez créer un fichier XML.Comment ajouter des données à un élément avec le paquet dom d'ActiveState

set xmlDoc [::dom::create] 
set root [::dom::document createElement $xmlDoc "trafficStatistics"] 

set statElement [::dom::document createElement $root "Tx_Frames"] 
::dom::element setAttribute $statElement "type" "numericlist" 
::dom::element setAttribute $statElement "displayName" "Tx Frames" 

puts [::dom::serialize $xmlDoc -indent true] 

créer ce simple xml:

<result> 
    <trafficStatistics type="structure"> 
     <Tx_Frames type="numericlist" displayName="Tx Frames"></Tx_Frames> 
    </trafficStatistics> 
</result> 

Comment puis-je ajouter des données à l'élément Tx_Frames?

<Tx_Frames type="numericlist" displayName="Tx Frames">some data</Tx_Frames> 

Notez que le paquetage dom est en fait une enveloppe sur libxml2

Répondre

4

Je crois que vous voulez que la commande ::dom::document createTextNode. Par exemple:

::dom::document createTextNode $statElement "some data" 

Quand j'ajoute cette commande à votre exemple de script:

set xmlDoc [::dom::create] 
set root [::dom::document createElement $xmlDoc "trafficStatistics"] 

set statElement [::dom::document createElement $root "Tx_Frames"] 
::dom::element setAttribute $statElement "type" "numericlist" 
::dom::element setAttribute $statElement "displayName" "Tx Frames" 
::dom::document createTextNode $statElement "some data" 

Il produit ce XML:

<trafficStatistics> 
    <Tx_Frames type="numericlist" displayName="Tx Frames">some data</Tx_Frames> 
</trafficStatistics> 

Vous pouvez trouver de la documentation pour le paquetage dom ici:

http://docs.activestate.com/activetcl/8.5/tcldom/index.html

Espérons que ça aide,

Eric Melski