1

大きな xml を解析するときに奇妙な動作が発生します (ただし、大きな xml が問題の原因であるかどうかはわかりません)。これは 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 要素しか処理していないことであり、その理由は本当にわかりません。どんなアイデアでも助けてください。どうもありがとう!

後で編集 して、解析が成功して何か問題が発生したかどうかを確認するチェックを追加しました。問題はシンボルに関連してい&ます-xmlに次の行があります:

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

サーバー側ではなく、Rokuコードでこの問題を解決するにはどうすればよいですか? インターネットで検索しても解決策が見つかりませんでした。わかりました。

4

1 に答える 1

1

Roku SDK で、generalUtils.brs から ReplaceSubstring 関数を取得し、プロジェクトに挿入します。これを使用して、コード内の「&」を「&」に置き換えます。より高速な roRegex コンポーネントを使用することもできます。理想的には、サーバー上でこれを修正する必要があります。問題は、デバイスに不適切な xml をフィードしているためです。

于 2012-05-11T16:46:20.850 に答える