Roku - 不解析格式不正确的xml

问题描述:

解析一个大的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 

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

稍后编辑 我已经添加了一个检查,看看解析是否成功,并出现问题。问题是关系到符号& - 我在XML下面一行:

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

我怎样才能解决这个问题,而不是在服务器端,但在Roku公司代码?我找不到任何通过互联网搜索的解决方案。韩国社交协会。

+0

发布其他19'猫'元素太plz – Torious 2012-04-18 13:51:15

+0

@丰富:我已经更新了问题...现在是更清楚的问题是在哪里,但仍然没有解决方案... – Paul 2012-04-18 15:26:36

+1

是啊''应该在XML中编码为'&' – Torious 2012-04-18 15:29:13

在Roku SDK中,从generalUtils.brs中取出ReplaceSubstring函数并将其插入到您的项目中。用它代替代码中的“&”和“& amp”。您也可以使用可能更快的roRegex组件。理想情况下,您应该在服务器上修复此问题,因为问题在于您将糟糕的xml文件输入到设备中,而其他任何内容都是混乱的。

+1

嗨。因为我无法访问服务器端,所以我在客户端使用像你说的'roRegex'来解决这个问题,像这样:'xmlraw = xfer.GetToString() re = CreateObject(“roRegEx”,“&”,“ “) xml = re.ReplaceAll(xmlraw,”&“)'谢谢。 – Paul 2012-05-15 14:13:33