【问题标题】:Stream-lined xml builder/parser in Android?Android中的流线型xml构建器/解析器?
【发布时间】:2010-12-08 16:25:55
【问题描述】:

我正在从一本书中学习Android api,似乎没有提到stream-lined api 用于处理raw xml(阅读写作)。他的解析建议是XmlPullParser,考虑到我在其他平台上被宠坏的api's(尤其是LINQ to XML),他的例子看起来很可怕。

这是Android platform 上最好的可用技术吗?

显然我可以编写一个包装器来避免重复的东西,但如果不存在这样的东西,我会感到惊讶。

另外,他甚至没有提到在代码中创建xml structures。两者都有哪些选择?

顺便说一句,任何熟悉LINQ to XML in .NetJava 开发人员都知道Java 中的任何等效项吗?

【问题讨论】:

    标签: java xml android


    【解决方案1】:

    由于您可能不希望将任何大尺寸的 DOM 加载到 Android 的内存中 - pull 和 SAX 解析器是 Android 中处理 XML 的首选方式。我认为投资了解 SAX 的工作原理并编写自定义处理程序而不是依赖一些可能不兼容或过度膨胀的通用库是值得的。我一直在使用 SAX 在我的应用程序中解析 XML,而且我对速度非常满意(大部分时间)

    【讨论】:

    • 我正计划在 Androidguys.com 上为 Android 中 XML 提要的 SAX 解析编写教程。允许的时间 - 到周末,所以请保持关注
    【解决方案2】:

    好吧,我对 Java 还是很陌生,但这是我迄今为止收集到的关于 Android 上的 xml 解析的内容:

    由于资源限制,建议为 Android 使用 XmlPullParser 方法。 Android 中有一个可用的 DOM 解析器,它可以让您使用 XPath 来导航 xml 文档。但是,使用 DOM 意味着您必须一次将整个文档加载到内存中。 XmlPullParser 方法在使用内存方面效率更高。

    在熟悉了 LINQ to XML 或 XPath 之后,XmlPullParser 方法需要一点时间来适应,但恕我直言(至少对于我正在解析的文档而言),这确实不算太糟糕。如果您使用的是小型 xml 文档,您当然可以将 DOM 与 XPath 一起使用。

    这里有一篇关于使用 Android 读写 XML 的不同方法的不错的文章: http://www.ibm.com/developerworks/opensource/library/x-android/index.html

    【讨论】:

      【解决方案3】:

      我在解析 xml 或 xhtml 时遇到了同样的问题,最后我编写了一个 web 服务来为我做这件事。

      Android Device ->(Request URL) -> Webservice Get and Parse -
      -> (Data) -> Android Device
      

      您可以以 JSON 格式传输数据以在设备上使用它。 这样做的好处是您可以将慢速移动网络上的流量降到最低,并在不发布新的 android 应用的情况下更改解析。

      也许这对你也有用。

      问候

      【讨论】:

      • 那么,您是说代理进行解析,并且您以原生格式返回 android 应用程序的数据?这很漂亮,但我实际上拥有交易的两端。我正在寻找的是如何序列化和反序列化我的对象。在 C# 中,我可以使用属性以声明方式执行此操作...在 Java 中是否存在相同的情况?
      • 为了进行序列化,我们使用 hessian hessian.caucho.com 有一个名为 hessdroid 的 android 库和一个用于 c# 的库。如果数据不是太大,您可以使用 json json.org 进行传输。在android中存在一个处理json数据的包developer.android.com/reference/org/json/package-summary.html
      • Hessian 看起来很适合我。我可以更改我的服务签名以传递字符串并将 Hessian 放在两端以进行序列化/反序列化。到目前为止,对于 Hessian 来说,文档看起来很糟糕......任何与文档的良好链接或我应该查看哪些类来仅序列化和反序列化对象?
      • 其实你可以传递任何你喜欢的对象。只需让双方都知道接口即可。
      猜你喜欢
      • 2011-06-26
      • 2012-10-01
      • 2023-03-26
      • 2012-01-12
      • 2012-05-21
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多