解析大型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。
答案 0 :(得分:1)
在Roku SDK中,从generalUtils.brs中提取ReplaceSubstring函数并将其插入项目中。用它来取代“&amp;”在您的代码中使用“&amp; amp”。您也可以使用可能更快的roRegex组件。理想情况下,您应该在服务器上修复此问题,因为问题是您正在向设备提供不良的xml,其他任何东西都是kludge。