roXMLElement
Este objeto se utiliza para contener un árbol XML. El equivalente en JavaScript es DOMParser().
El objeto roXMLElement se crea sin parámetros:
CreateObject("roXMLElement")Los siguientes ejemplos ilustran cómo se analizan los elementos XML en BrightScript:
<tag1>This is example text</tag1>- Nombre = tag1
- Atributos = Invalid
- Cuerpo = roString que contiene "This is example text"
<tag2 caveman="barney"/>- Nombre = tag2
- Atributos = roAssociativeArray con una entrada, {troglodita, Barney}
- Cuerpo = Invalid
Si la etiqueta contiene otras etiquetas, el cuerpo será de tipo roXMLList.
Para generar contenido XML, cree un roXMLElement y llame a los métodos SetBody() y SetName() para construirlo; luego llame al método GenXML() para generarlo.
Ejemplo
root.SetName("myroot")
root.AddAttribute("key1","value1")
root.AddAttribute("key2","value2")
ne=root.AddBodyElement()
ne.SetName("sub")
ne.SetBody("this is the sub1 text")
ne=root.AddBodyElement()
ne.SetName("subelement2")
ne.SetBody("more sub text")
ne.AddAttribute("k","v")
ne=root.AddElement("subelement3")
ne.SetBody("more sub text 3")
root.AddElementWithBody("sub","another sub (#4)")
PrintXML(root, 0)
print root.GenXML(false)ifXMLElement
GetBody() As Object
GetAttributes() As Object
GetName() As String
GetText() As String
GetChildElements() As Object
GetNamedElements(a As String) As Object
GetNamedElementsCi(a As String) As Object
SetBody(a As Object)
Genera un roXMLList para el cuerpo si es necesario. Luego, el método agrega el elemento pasado (que debe ser una etiqueta roXMLElement).
AddBodyElement() As Object
AddElement(a As String) As Object
AddElementWithBody(a As String, b As Object) As Object
AddAttribute(a As String, b As String)
SetName(a As String)
Parse(a As String) As Boolean
Analiza el contenido XML que se le pasa. En caso de error, este método devuelve False. Sin embargo, también rellena roXMLElement con cualquier texto que se haya podido analizar correctamente. Para evitar pasar cadenas erróneas, siempre es mejor que el script verifique el valor de retorno de Parse() antes de utilizarlas.
GenXML(a As Boolean) As String
Genera contenido XML. Este método toma un único parámetro Boolean, que indica si el XML debe tener o no una etiqueta <?xml …> en la parte superior.
Clear() As Void
GenXMLHdr(a As String) As String
IsName(a As String) As Boolean
HasAttribute(a As String) As Boolean
ParseFile(a As String) As Boolean
Ejemplo
Este ejemplo de subrutina imprime el contenido de un árbol roXMLElement:
PrintXML(root, 0)
Sub PrintXML(element As Object, depth As Integer)
print tab(depth*3);"Name: ";element.GetName()
if not element.GetAttributes().IsEmpty() then
print tab(depth*3);"Attributes: ";
for each a in element.GetAttributes()
print a;"=";left(element.GetAttributes()[a], 20);
if element.GetAttributes().IsNext() then print ", ";
end for
print
end if
if element.GetText()<>invalid then
print tab(depth*3);"Contains Text: ";left(element.GetText(), 40)
end if
if element.GetChildElements()<>invalid
print tab(depth*3);"Contains roXMLList:"
for each e in element.GetChildElements()
PrintXML(e, depth+1)
end for
end if
print
end sub