2016-06-21 3 views
0

Я очень неопытен в использовании Brightscript и работе с XML-контентом, но в настоящее время мне бросают вызов сделать так, чтобы разработать приложение roku. На данный момент мне нужно выяснить, как отсортировать XML-код из онлайн-документа, чтобы получить некоторые необходимые данные. Любой совет будет принят во внимание.трудности с использованием XML в Brightscript

Вот как выглядит документ 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 

До сих пор это был единственный способ, с помощью которого я смог установить соединение. Опять же, любая помощь приветствуется.

ответ

1

Убедитесь, что xml_str переменная не является пустым или недействительным и GetXML функция работает хорошо.

+0

похоже, что моя строка неверна, вы правы. Спасибо за этот совет. Вопрос в том, почему он считается недействительным? Должен ли я инициализировать что-то, чтобы сделать его действительным? –

+0

Попробуйте отладить этот HTTP-запрос. Для упрощения вы можете использовать синхронный вызов: 'return link.getToString()' вместо цикла. –

+0

хорошо, я стараюсь изо всех сил, но на данный момент я действительно не знаю, что я делаю. я, вероятно, собираюсь перейти к чему-то еще. благодарю вас за вашу помощь независимо. –

 Смежные вопросы

  • Нет связанных вопросов^_^