1

解析大型 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 

问题是只处理 14 个 cat 元素,而不是 21 个,我真的不知道为什么。请帮助我任何想法。非常感谢!

稍后编辑 我添加了一个检查以查看解析是否成功并且那里出了问题。问题与符号有关&- 我在 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 回答