You can use the xml() function to loop through the xml nodes, and the attribute nodes as well.
open (unt,isz=1)"test.xml"
read record (lfo,siz=9999999)xml$
close (lfo)
let ofs=0
let xml1$=xml(next from xml$,ind=ofs,key=tag$) ! get first level xml
let ofs1=0
while 1
let xml2$=xml(next from xml1$,ind=ofs1,key=tag$,opt=prop$,err=*break) ! loop through tags
let propofs=0
while 1
let propval$=xml(property next from prop$,ind=propofs,key=propname$,err=*break) ! loop through attributes until Name="Shape"
if propname$="Name" and propval$="Shape" then let found=1; break
wend
if found then break
wend
print xml2$