【问题标题】:How to parse different XML files using SAX on Android?如何在 Android 上使用 SAX 解析不同的 XML 文件?
【发布时间】:2010-08-27 12:01:11
【问题描述】:

我有以下场景。

我将一个 XML 文件作为请求发送到服务器,并获取一个 XML 文件作为响应,并将所有这些作为 Android 上的后台线程。

使用各种值对 XML 请求进行序列化。然后 SAX 读取 XML 响应并将其放入列表中。整个请求/响应过程发生在使用AsyncTask 类的后台线程中。

问题是我有不同类型的响应,我不知道根据发送的请求来解析响应的方法。

我如何告诉 Android 使用基于请求 A 的解析器 A 和基于请求 B 的解析器 B?

编辑: 对于不同类型的响应,我的意思是 XML 文件看起来不同。它有不同的标签和不同的属性。

【问题讨论】:

    标签: android xml parsing sax


    【解决方案1】:

    以下是我看到的选项:

    1. 您可以根据请求(应该有某种上下文)来建立解析能力。如果您知道请求是类型 A,那么您就知道响应必须使用解析器 A。
    2. 您可以拥有所有类型的通用解析器,并根据第一个已知标记或指示应该做什么的属性在解析器中分支发生的事情
    3. 先解析,后分析。取出所有响应元素,并从中构建对象或对象图。传递这些,如果您的应用程序需要,对它们进行变异(不要尝试编辑 xml - 毕竟您正在解析它,并且您希望尽快完成)。

    祝你好运!

    【讨论】:

    • 感谢您的回答。您的最后一个选项似乎很有趣。有没有办法使用 SAX 解析器来实现这一点?
    • 当然,任何开始/结束元素事件都可以用来描绘对象边界。
    【解决方案2】:

    都是消息响应对象,在xml响应中指定一个属性来表示和对象类型

    <response>
    <error/>
    <data type="A">
    </data>
    </response>
    
    <response>
    <error/>
    <data type="B">
    </data>
    </response>
    

    【讨论】:

    • 我唯一的问题是我无法修改 XML。
    • 然后解析 xml 以获得特定的区别,然后在该值上分支代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2011-04-30
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多