代码之家  ›  专栏  ›  技术社区  ›  Bogdan Gavril MSFT

如何使用ActiveState的DOM包向元素添加数据

  •  1
  • Bogdan Gavril MSFT  · 技术社区  · 16 年前

    在TCL中,如果使用DOM包(在ActiveState发行版中可用),则可以创建XML。

    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]
    

    创建此简单XML:

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

    如何向tx_帧元素添加一些数据?

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

    注意,dom包实际上是libxml2的包装器

    1 回复  |  直到 14 年前
        1
  •  4
  •   Eric Melski    16 年前

    我相信你想要 ::dom::document createTextNode 命令。例如:

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

    将此命令添加到示例脚本时:

    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"
    

    它生成此XML:

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

    您可以在这里找到dom包的文档:

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

    希望能有所帮助,

    埃里克梅尔斯基