在Brightscript中使用XML的困难

时间:2016-06-21 15:25:43

标签: xml roku brightscript

我在使用Brightscript和使用XML内容方面都缺乏经验,但我目前面临着开发roku应用程序的挑战。目前,我需要弄清楚如何从在线文档中对某些XML进行排序以获取一些必要的数据。任何建议将不胜感激。

这里是XML文档的样子。 (MediaModel节点中存在更多项目,但我认为我不需要它们。)

<ArrayOfMediaModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BlueBridgeIntegration.Models">
  <MediaModel>
    <Archive_ID>...</Archive_ID>
    <Archive_Title>...</Archive_Title>
    <Description>...</Description>
    <Image_Path>...</Image_Path>
    <MP3>...</MP3>
    <MP4>...</MP4>
    <RTMP_Path>...</RTMP_Path>
    <Series_ID>...</Series_ID>
    <Title>...</Title>
  </MediaModel>
  <MediaModel>...</MediaModel>
  <MediaModel>...</MediaModel>
  ...
  <MediaModel>...</MediaModel>
</ArrayOfMediaModel>

虽然总结了,但这是文件的范围。我需要从XML中提取的最重要的信息项是标题,描述,图像和mp4。

在当前状态下,我所拥有的代码只是解析XML内容,但这是我到目前为止的代码。

sub CreateRecentMenu()
    screen = CreateObject("roGridScreen")
    port = CreateObject("roMessagePort")
    xml = CreateObject("roXMLElement")

    xml_str = GetXML("[url to the XML document]")
    xml.Parse(xml_str)

    ...

    return
end sub

到目前为止,我尝试从文档中获取所需信息已经证明可以破解程序。再次,非常感谢任何建议。谢谢。

编辑:我能够确定xml_str字符串是无效的,出于什么原因我不确定。这是我将XML代码作为字符串获取的代码。

Function GetXML(url as String) as string
    data = ""
    port = CreateObject("roMessagePort")
    link = CreateObject("roUrlTransfer")
    link.setPort(port)
    link.setUrl(url)
    link.SetCertificatesFile ("common:/certs/ca-bundle.crt")
    link.InitClientCertificates ()

    if(link.AsyncGetToString())
        finished = False
        while not finished
            msg = wait(0, port)
            if msg = invalid
                finished = True
                print "failure to connect"
                link.AsyncCancel()
            else
                if type(msg) = "roUrlEvent"
                    finished = True
                    if msg.GetInt() = 1
                        response = msg.GetResponseCode()
                        if response <> 200
                            print response
                        else
                            data = msg.GetString()
                        end if
                    end if
                else
                    return invalid
                end if
            end if
        end while
    end if
    return data
End Function

到目前为止,这是我能够使连接工作的唯一方法。再次,任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

确保 xml_str 变量不为空或无效且 GetXML 功能正常运行。