2012-04-18 25 views
1

大きなxmlを解析するときに奇妙な動作があります(しかし、大きな問題が原因であるかどうかはわかりません)。 これは、XML形式である:Roku - 不正な形式のXMLを解析しない

<?xml version="1.0" encoding="UTF-8"?> 
    <webservice> 
    <control> 
    <operation>get_clips</operation> 
    <status>0</status> 
    </control> 
    <data> 
     <cat size="4" lang="EN"/> 
     <cat size="3" lang="EN"/> 
     ' and 19 more other similar 'cat' elements 
    </data> 
    </webservice> 

これはm.rawResponse上記のXML文字列であるコードです。

if m.rawResponse <> "" then 
    xml = CreateObject("roXMLElement") 
    print "################ "; m.rawResponse ' contains the entire xml 
    xml.Parse(m.rawResponse) 
    print "################ "; m.rawResponse ' contains the entire xml 

    ' I've tried like this 
    categories = xml.data.GetChildElements() 
    print "number of categories: " ; categories.Count() ' prints 14 

    ' and also like this 
    i = 0 
    for each categ in xml.data.cat 
    i = i +1  
    end for 
    print i ' prints 14 
end if 

問題は21個の代わりに14個のcat要素を処理しているだけなので、なぜ私は本当にその理由がわかりません。 私に助けてください。 ありがとう!

後で編集 私は、解析が成功し、何か問題が発生したかどうかを確認するためのチェックを追加しました。

<director>Donald Nij & Rick Senjin</director> 

どのように私はこの問題を解決することができますが、ない、サーバー側ではなく、Rokuのコードに:私は次の行をXMLで持っている - 問題は、シンボル&に関連していますか?私はインターネット上で何か解決策を見つけることができませんでした。 Tks。

+0

他の19 'cat'要素も投稿してください – Torious

+0

@トーラス:質問を更新しました...問題がどこにあるのかがもう少し明確ですが、まだ解決策はありません。 – Paul

+1

うん、 '&'は – Torious

答えて

1

Roku SDKで、ReplaceSubstring関数をgeneralUtils.brsからプルしてプロジェクトに挿入します。これを使用してコード内の "&"を "& amp"に置き換えてください。より高速なroRegexコンポーネントを使用することもできます。理想的には、サーバーにこの問題を解決する必要があります。問題は悪いxmlをデバイスに供給していることにほかなりません。

+1

こんにちは '&'でエンコードされているはずです。私はサーバー側へのアクセス権がないので、クライアント側で 'roRegex'と言ったようにこれを修正しました:' xmlraw = xfer.GetToString() re = CreateObject( "roRegEx"、 "&"、 " ") xml = re.ReplaceAll(xmlraw、" & ")感謝します。 – Paul

関連する問題