2016-07-27 15 views
-1

Ich habe eine XML Datei auf einem Unix-Server. Wie kann ich diese XML Datei mit einem Skript ausführen?Wie können wir eine XML-Datei mit TCL-Skript ausführen?

+5

Was bedeutet 'eine XML-Datei ausführen' bedeuten? XML-Dateien sind Datenspeichergeräte mit Namen-Wert-Paaren. –

+1

versuchen Sie, ein XML-Dokument mit TCL zu analysieren? –

+0

Optimiert durch Entfernen überflüssiger Anweisungen. Formatierte technische Terminologie. – MarsAtomic

Antwort

2

Wenn Sie nach einer einfachen Möglichkeit zum Parsen suchen (wenn Sie das mit Run meinen), betrachten Sie das Tdom-Paket.

Referenz: http://wiki.tcl.tk/8984

Hier ist eine Datei foo.xml mit folgendem Inhalt:

<my_root> 
    <my_child1> 
     <my_subchild1 foo="bar">bat</my_subchild1> 
    </my_child1> 
</my_root> 

Lesen Sie die XML-Daten in eine Variable (nicht den besten Weg, wenn die XML-Inhalte groß sind):

% 
% set fd [open foo.xml] 
file3 
% set xml [read $fd] 
<my_root> 
    <my_child1> 
     <my_subchild1 foo="bar">bat</my_subchild1> 
    </my_child1> 
</my_root> 

% close $fd 
% 

Jetzt ist es analysieren:

% package require tdom 
0.8.3 
% 
% set documentHandle [dom parse $xml] 
domDoc0x2510320 
% set root [$documentHandle documentElement] 
domNode0x2546d90 
% $root asXML 
<my_root> 
    <my_child1> 
     <my_subchild1 foo="bar">bat</my_subchild1> 
    </my_child1> 
</my_root> 

% set child1 [$root firstChild] 
domNode0x16dcec0 
% $child1 asXML 
<my_child1> 
    <my_subchild1 foo="bar">bat</my_subchild1> 
</my_child1> 

% set tmp [$root selectNodes //my_subchild1] 
domNode0x16dd630 
% $tmp asXML 
<my_subchild1 foo="bar">bat</my_subchild1> 

% $tmp getAttribute foo 
bar 
% $tmp text 
bat 
% 

Hier ist die Liste der unterstützten Befehl mit einem geparsten XML-Knoten:

% $tmp 
Usage nodeObj <method> <args>, where method can be: 
    nodeType      
    nodeName      
    nodeValue ?newValue?   
    hasChildNodes     
    childNodes     
    childNodesLive    
    parentNode     
    firstChild ?nodeObjVar?  
    lastChild ?nodeObjVar?  
    nextSibling ?nodeObjVar?  
    previousSibling ?nodeObjVar? 
    hasAttribute attrName   
    getAttribute attrName ?defaultValue? 
    setAttribute attrName value ?attrName value ...? 
    removeAttribute attrName  
    hasAttributeNS uri localName 
    getAttributeNS uri localName ?defaultValue? 
    setAttributeNS uri attrName value ?attrName value ...? 
    removeAttributeNS uri attrName 
    attributes ?attrNamePattern? 
    appendChild new    
    insertBefore new ref   
    replaceChild new old   
    removeChild child    
    cloneNode ?-deep?    
    ownerDocument     
    getElementsByTagName name  
    getElementsByTagNameNS uri localname 
    getElementById id    
    find attrName attrValue ?nodeObjVar? 
    child  number|all ?type? ?attrName attrValue? 
    descendant number|all ?type? ?attrName attrValue? 
    ancestor number|all ?type? ?attrName attrValue? 
    fsibling number|all ?type? ?attrName attrValue? 
    psibling number|all ?type? ?attrName attrValue? 
    root ?nodeObjVar?    
    target      
    data       
    text       
    prefix      
    namespaceURI     
    getBaseURI     
    baseURI ?URI?     
    localName      
    delete      
    getLine      
    getColumn      
    @<attrName> ?defaultValue? 
    asList      
    asXML ?-indent <none,0..8>? ?-channel <channel>? ?-escapeNonASCII? ?-escapeAllQuot? ?-doctypeDeclaration <boolean>? 
    asHTML ?-channel <channelId>? ?-escapeNonASCII? ?-htmlEntities? 
    asText      
    appendFromList nestedList  
    appendFromScript script  
    insertBeforeFromScript script ref 
    appendXML xmlString   
    selectNodes ?-namespaces prefixUriList? ?-cache <boolean>? xpathQuery ?typeVar? 
    toXPath      
    disableOutputEscaping ?boolean? 
    precedes node     
    normalize ?-forXPath?   
    xslt ?-parameters parameterList? <xsltDocNode> 
    readlock      
    writelock      

%