2016-07-27 2 views
-1

나는 XML 파일을 유닉스 서버에 가지고있다. Tcl 스크립트를 사용하여 XML 파일을 어떻게 실행할 수 있습니까?TCL 스크립트를 사용하여 xml 파일을 어떻게 실행할 수 있습니까?

+5

무슨 뜻 'xml 파일을 실행'않는가? XML 파일은 이름 값 쌍이있는 데이터 저장 장치입니다. –

+1

TCL을 사용하여 XML 문서를 구문 분석하려고하십니까? –

+0

중복 된 문을 제거하여 간소화되었습니다. 형식이 지정된 기술 용어. – MarsAtomic

답변

2

XML을 파싱하는 간단한 방법을 찾으려면 tdom 패키지를 고려하십시오.

참조 : http://wiki.tcl.tk/8984

여기에 다음과 같은 내용으로 파일 foo.xml이있다 :

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

XML 내용이 큰 경우 변수 (하지에 가장 좋은 방법은 XML 데이터 읽기) :

% 
% 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 
% 

,

이제 구문 분석 :

% 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 
% 

다음은 구문 분석 된 XML 노드에 지원되는 명령의 목록입니다 :

% $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      

% 
관련 문제