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
これまでのところ、これは私が接続作業を行うことができた唯一の方法です。再び、どんな助けもありがとう。
文字列が無効であると思われます。そのアドバイスをいただきありがとうございます。問題は、なぜ無効と見なされるのでしょうか?私はそれを有効にするために何かを初期化する必要がありますか? –
httpリクエストをデバッグしてみてください。単純化するために、同期呼び出しを使用することができます:ループの代わりに 'return link.getToString()'。 –
私はベストを尽くしていますが、現時点で私は何をしているのか分かりません。私はおそらく別のものに進むつもりです。あなたの助けに関係なく、ありがとう。 –