在Brightscript中使用XML的困难



我在使用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

到目前为止,我从文档中获得所需信息的尝试已证明是违反程序的。同样,任何建议都非常感谢。谢谢。

edit :我能够确定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

到目前为止,这是我能够使连接起作用的唯一方法。同样,任何帮助都将受到赞赏。

确保 xml_str 变量不是空的或无效的, getxml 函数函数效果很好。

相关内容

  • 没有找到相关文章

最新更新