我正在编写一个使用beta webservice API的Air应用程序。有时这个API会让我感觉格式错误的XML节点,当我尝试从中创建XML对象时,actionscript会引发错误。
我一直在做的只是尝试/捕获结果并忽略整个响应,如果XML不好,但我可以忽略格式错误的节点。
例如:
<result>
<Song>
<location>http://www.anyurl.com/audio/loftparty092108_pt4.mp3</location>
<title>Phonte party @ The Loft, 9/21/08 (pt. 4)</title>
<artist>Statik, Jahsonic & Stylus <artist>Statik, Jahsonic & Stylusre />
</Song>
</result>
看到那个标签?如果我喜欢这样的话,我想跳过整首歌并获得下一首歌。
我有什么方法可以做到这一点吗?
答案 0 :(得分:1)
Beautiful Soup这样做,但它是用Python编写的。你当然可以总是深入挖掘资源,看看他们是如何实现的。
答案 1 :(得分:1)
HTTPService
的{{3}}成员。 答案 2 :(得分:1)
如果错误类的数量很少,请预处理XML以删除错误,然后将其交给解析器。这将使您能够在问题得到解决后轻松删除解决方法。在上面的例子中,您将文件作为文本加载,查找具有重复标记的节点,然后从XML文本中删除整个节点。
或者只是通知Web服务提供商并等待 - 如果他们返回格式错误的XML,几乎每个解析器都会阻塞它,并且应该有动力很快修复它。
答案 3 :(得分:1)
不,您不能使用普通的XML解析器忽略格式错误的XML文档的一部分。这就像要求Flex编译器忽略语法错误并找出编码器真正意图做的事情。您将不得不编写自己的解析器,尝试推断出哪些错误以及可以忽略的内容。
老实说,任何发送错误XML的Web服务,甚至是测试版都不可靠。这意味着他们“手动”编写XML而不是使用编程类。任何人这样做都可能会产生许多其他错误,尤其是回归。你的时间太宝贵了,无法依赖它们。
干杯