|
Posted by comp.lang.tcl on 11/25/06 23:39
Gerald W. Lester wrote:
> comp.lang.tcl wrote:
> > My TCL proc, XML_GET_ALL_ELEMENT_ATTRS, is supposed to convert an XML
> > file into a TCL list as follows:
> >
> > attr1 {val1} attr2 {val2} ... attrN {valN}
>
> First off, sorry to everyone else for the long post, but I got tired reading
> these threads.
>
> Second off, the following does not return *EXACTLY* what you asked for it
> returns more, but you should be able to convert it to what you ask for.
>
> ##
> ## A node will be the following list of name value pairs:
> ## NAME nodeName
> ## TEXT text
> ## ATTRIBUTES attributeNameValueList
> ## CHILDREN childNodeList
> ##
> package require tdom
Sorry I am unable to figure out how to install and use tdom. I tried
this
lappend auto_path /home/ppowell/web/cgi-bin
package require tdom
at the top of xml_procs.tcl, to no avail, I get the following error:
can't find package tdom while executing "package require tdom" (file
"xml_procs.tcl" line 2)
I was able to download and install tdom, or I guess install it:
1) I downloaded it
2) I unzipped it
3) everything's in /home/ppowell/web/cgi-bin/tDom-0.8.0
4) I was not allowed to do ../configure, much less "make" nor "make
install", "../configure" not found
Phil
>
> set xml {<?xml version="1.0" encoding="utf-8" ?>
> <trivia>
> <entry id="1101" triviaID="233" question="Who wrote "Trilogy
> of Knowledge"?" answerID="1" correctAnswerID="1" answer="Believer"
> expDate="1139634000"></entry>
> <entry id="1102" triviaID="233" question="Who wrote "Trilogy
> of Knowledge"?" answerID="2" correctAnswerID="1" answer="Saviour
> Machine" expDate="1139634000"> </entry>
> <entry id="1103" triviaID="233" question="Who wrote "Trilogy
> of Knowledge"?" answerID="3" correctAnswerID="1" answer="Seventh
> Avenue" expDate="1139634000"></entry>
> <entry id="1104" triviaID="233" question="Who wrote "Trilogy
> of Knowledge"?" answerID="4" correctAnswerID="1" answer="Inevitable
> End" expDate="1139634000"></entry>
> <entry id="1105" triviaID="233" question="Who wrote "Trilogy
> of Knowledge"?" answerID="5" correctAnswerID="1" answer="No such song
> existed" expDate="1139634000"></entry>
> </trivia>
> }
>
> ##
> ## Convert a node to a list
> ##
> proc NodeToList {node} {
> ##
> ## Get the name and text value of the node
> ##
> set name [$node nodeName]
> set text [$node text]
>
> ##
> ## Get the attributes of the node
> ##
> set attrList {}
> foreach attribute [$node attributes] {
> lappend attrList $attribute [$node getAttribute $attribute]
> }
>
> ##
> ## Get the children of the node
> ##
> set childrenList {}
> foreach child [$node childNodes] {
> if {![string equal [$child nodeType] TEXT_NODE]} then {
> lappend childrenList [NodeToList $child]
> }
> }
>
> ##
> ## All done so return the list representing this subtree
> ##
> return [list NAME $name TEXT $text ATTRIBUTES $attrList CHILDREN
> $childrenList]
> }
>
> ##
> ## Convert the XML to a DOM tree
> ##
> dom parse $xml doc
>
> ##
> ## No get the root element
> ##
> $doc documentElement root
>
> ##
> ## Convert the tree to a list
> ##
> set results [NodeToList $root]
> $doc delete
>
>
> --
> +--------------------------------+---------------------------------------+
> | Gerald W. Lester |
> |"The man who fights for his ideals is the man who is alive." - Cervantes|
> +------------------------------------------------------------------------+
Navigation:
[Reply to this message]
|