Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的流线型xml生成器/解析器?_Java_Xml_Android - Fatal编程技术网

Java Android中的流线型xml生成器/解析器?

Java Android中的流线型xml生成器/解析器?,java,xml,android,Java,Xml,Android,我正在从一本书中学习Android api,似乎没有提到处理原始xml(读写)的流线型api。他对解析的建议是XmlPullParser,考虑到我在其他平台(尤其是linqtoxml)中被破坏的api的类型,他的例子看起来很可怕 这是安卓平台上可用的最佳技术吗 显然,我可以编写一个包装来避免重复的东西,但是如果没有这样的东西存在,我会感到惊讶 此外,他甚至没有提到在代码中创建xml结构。我的两种选择是什么 另一方面,熟悉.Net中的LINQ to XML的Javadev是否知道Java中的任何等

我正在从一本书中学习
Android api
,似乎没有提到处理
原始xml
(读写)的
流线型api
。他对解析的建议是
XmlPullParser
,考虑到我在其他平台(尤其是
linqtoxml
)中被破坏的
api的类型,他的例子看起来很可怕

这是安卓平台上可用的最佳技术吗

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

此外,他甚至没有提到在代码中创建
xml结构。我的两种选择是什么


另一方面,熟悉.Net中的
LINQ to XML的
Java
dev是否知道Java中的任何等价物?

我对Java相当陌生,但以下是我迄今为止收集到的关于Android上XML解析的信息:

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

XmlPullParser方法在熟悉LINQ到XML或XPath之后需要一点时间来适应,但IMHO(至少对于我正在解析的文档来说)还不错。如果您使用的是小型xml文档,那么肯定可以将DOM与XPath结合使用

这里有一篇关于使用Android读写XML的不同方法的文章:

因为您可能不想将任何大尺寸的DOM加载到Android的内存中,所以在Android中,拉式和SAX解析器是处理XML的首选方法。我认为投资于理解SAX的工作原理并编写自定义处理程序比依赖一些可能不兼容或过度使用的通用库更划算。我一直在使用SAX解析应用程序中的XML,我对解析速度感到非常满意(大多数情况下)

我在解析XML或xhtml时遇到了同样的问题,最后为我编写了一个Web服务

Android Device ->(Request URL) -> Webservice Get and Parse -
-> (Data) -> Android Device
您可以用JSON传输数据,以便在设备上使用它。 这样做的好处是,您可以将慢速移动网络上的流量降至最低,并在不发布新的android应用程序的情况下更改解析

也许这对你也有用


关于

我计划在Androidguys.com上为Android中XML提要的SAX解析编写一个教程。时间允许-在本周末之前,请留下帖子。那么,你是说代理进行解析,然后以本机格式为android应用程序返回数据?这很巧妙,但实际上我拥有交易的两端。我要寻找的是如何序列化和反序列化我的对象。在C#中,我可以用属性声明性地完成这项工作……Java中是否也存在相同的情况?对于序列化,我们使用hessian,它有一个android库,称为hessdroid,还有一个C#库。如果数据不是太大,可以使用json进行传输。在android中有一个处理json数据的包,Hessian看起来非常适合我。我可以更改我的服务签名来传递字符串,并将Hessian放在两端进行序列化/反序列化。到目前为止,对于Hessian来说,文档看起来很简单……有没有关于文档的好链接,或者我应该看哪些类来序列化和反序列化对象?实际上,你可以传递任何你喜欢的对象。只要让双方都知道接口就行了。