Soporte XML
7 min
brightscript proporciona compatibilidad con xml mediante dos objetos brightscript y un conjunto de características dedicadas del lenguaje roxmlelement este objeto proporciona compatibilidad para analizar, generar y contener xml roxmllist este objeto se utiliza para contener una lista de instancias de roxmlelement operador de punto el operador de punto docid\ x0lwrddqbct3aztlesb1 " " tiene las siguientes características cuando se utiliza con objetos xml cuando se utiliza con una instancia de roxmlelement , el operador de punto " " devuelve una instancia de roxmllist de las etiquetas secundarias que coinciden con el operando del punto si ninguna etiqueta coincide con el operando, se devuelve una lista vacía cuando se aplica a una instancia de roxmllist , el operador de punto " " agrega los resultados de realizar la operación anterior en cada roxmlelement de la lista cuando se aplica a xml, que técnicamente distingue entre mayúsculas y minúsculas, el operador de punto " " sigue sin distinguir entre mayúsculas y minúsculas si desea realizar una operación xml sensible a mayúsculas y minúsculas, utilice las funciones miembro de los objetos roxmlelement / roxmllist operador de atributos el operador de atributos “@” se puede utilizar con una instancia de roxmlelement para devolver un atributo nombrado aunque xml distingue entre mayúsculas y minúsculas, el operador de atributos nunca distingue entre mayúsculas y minúsculas si el operador de atributos se utiliza con una instancia de roxmllist , solo devolverá un valor si esa lista contiene exactamente un elemento ejemplos \<?xml version="1 0" encoding="utf 8" ?> \<rsp stat="ok"> \<photos page="1" pages="5" perpage="100" total="500"> \<photo id="3131875696" owner="21963906\@n06" secret="f248c84625" server="3125" farm="4" title="vny 16r" ispublic="1" isfriend="0" isfamily="0" /> \<photo id="3131137552" owner="8979045\@n07" secret="b22cfde7c4" server="3078" farm="4" title="hoot" ispublic="1" isfriend="0" isfamily="0" /> \<photo id="3131040291" owner="27651538\@n06" secret="ae25ff3942" server="3286" farm="4" title="172 • 365 someone once told me " ispublic="1" isfriend="0" /> \</photos> \</rsp> dado el xml del archivo example xml anterior, el siguiente código devolverá una instancia de roxmllist con tres entradas rsp=createobject("roxmlelement") rsp parse(readasciifile("example xml")) ? rsp photos photo lo siguiente devolverá una referencia roxmlelement a la primera foto (id=" 3131875696 ") ? rsp photos photo\[0] lo siguiente devolverá una referencia roxmllist que contiene la etiqueta \<photos> ? rsp photos lo siguiente devolverá la cadena “100” rsp photos\@perpage puede utilizar el método roxmlelement gettext() para devolver el texto de un elemento por ejemplo, si la variable \<booklist> contiene el elemento \<book lang=eng>el amanecer del hombre\</book> , entonces el siguiente código imprimirá la cadena “the dawn of man” print booklist book gettext() alternativamente, usar el operador de atributos imprimirá la cadena “eng” print booklist book\@lang clip de código de flikr rem rem interestingness rem pass an (optional) page of value 1 5 to get 100 photos rem starting at 0/100/200/300/400 rem rem returns a list of "interestingness" photos with 100 entries rem function getinterestingnessphotolist(http as object, page=1 as integer) as object 	print "page=";page http seturl("http //api flickr com/services/rest/?method=flickr interestingness getlist\&api key=yourkeygoeshere\&page="+mid(stri(page),2)) xml=http gettostring() rsp=createobject("roxmlelement") if not rsp parse(xml) then stop return helperphotolistfromxml(http, rsp photos photo) 'rsp getbody() peek() getbody()) end function function helperphotolistfromxml(http as object, xmllist as object, owner=invalid as dynamic) as object photolist=createobject("rolist") for each photo in xmllist photolist push(newphotofromxml(http, photo, owner)) end for return photolist end function rem rem newphotofromxml rem rem takes an roxmlelement object that is an \<photo> \</photo> rem returns an brs object of type photo rem photo gettitle() rem photo getid() rem photo geturl() rem photo getowner() rem function newphotofromxml(http as object, xml as object, owner as dynamic) as object photo = createobject("roassociativearray") photo http=http photo xml=xml photo owner=owner photo gettitle=function()\ return m xml\@title\ end function photo getid=function()\ return m xml\@id\ end function photo getowner=pgetowner photo geturl=pgeturl return photo end function function pgetowner() as string 	if m owner<>invalid return m owner 	return m xml\@owner end function function pgeturl() as string 	a=m xml getattributes() 	url="http //farm"+a farm+" static flickr com/"+a server+"/"+a id+" "+a secret+" jpg" 	return url end function