2016-06-21 21 views
0

BrightscriptとXMLコンテンツの両方で非常に慣れていませんが、現在は両方ともrokuアプリケーションを開発することに挑戦しています。現時点では、いくつかの必要なデータを得るためにオンラインドキュメントからXMLを整理する方法を理解する必要があります。アドバイスをいただければ幸いです。Brightscriptで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 

これまでのところ、これは私が接続作業を行うことができた唯一の方法です。再び、どんな助けもありがとう。

答えて

1

xml_str変数が空または無効なものではなく、GetXMLメソッド機能がうまく機能していることを確認してください。

+0

文字列が無効であると思われます。そのアドバイスをいただきありがとうございます。問題は、なぜ無効と見なされるのでしょうか?私はそれを有効にするために何かを初期化する必要がありますか? –

+0

httpリクエストをデバッグしてみてください。単純化するために、同期呼び出しを使用することができます:ループの代わりに 'return link.getToString()'。 –

+0

私はベストを尽くしていますが、現時点で私は何をしているのか分かりません。私はおそらく別のものに進むつもりです。あなたの助けに関係なく、ありがとう。 –

関連する問題