Roku - 不解析格式错误的xml

时间:2012-04-18 13:06:33

标签: xml xml-parsing roku brightscript

解析大型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代码上?我找不到任何通过互联网搜索的解决方案。 TKS。

1 个答案:

答案 0 :(得分:1)

在Roku SDK中,从generalUtils.brs中提取ReplaceSubstring函数并将其插入项目中。用它来取代“&amp;”在您的代码中使用“&amp; amp”。您也可以使用可能更快的roRegex组件。理想情况下,您应该在服务器上修复此问题,因为问题是您正在向设备提供不良的xml,其他任何东西都是kludge。