Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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上DOM API的替代方案?_Java_Android_Xml_Dom - Fatal编程技术网

Java Android上DOM API的替代方案?

Java Android上DOM API的替代方案?,java,android,xml,dom,Java,Android,Xml,Dom,我们有一个内部库,它使用org.w3c.domapi读取和写入XML。当我尝试在Android上使用这个库时,我发现它不再工作了。Android似乎只实现了DOM API的一个子集。我不知道这样做的原因,我知道安卓2.2已经修复了这一问题,但我仍然需要针对较旧的设备 我知道许多用于“常规”Java的可选DOM库,如XOM和Dom4j。有人能推荐一个满足以下目标的DOM库吗 它必须在Android上工作 它应该很小(因为人们按MB付费) 理想情况下,它应该类似于org.w3c.domapi,因为

我们有一个内部库,它使用org.w3c.domapi读取和写入XML。当我尝试在Android上使用这个库时,我发现它不再工作了。Android似乎只实现了DOM API的一个子集。我不知道这样做的原因,我知道安卓2.2已经修复了这一问题,但我仍然需要针对较旧的设备

我知道许多用于“常规”Java的可选DOM库,如XOM和Dom4j。有人能推荐一个满足以下目标的DOM库吗

  • 它必须在Android上工作
  • 它应该很小(因为人们按MB付费)
  • 理想情况下,它应该类似于org.w3c.domapi,因为我需要重写现有代码

这三个目标可能都不可能实现,但有了两个,我已经很高兴了。另外,出于好奇,有人知道为什么domapi没有得到完全支持吗?我可以理解不实现Java声音等的原因,但XML对我来说似乎非常重要。

我的一般建议是远离DOM解析器,因为与使用直接解析器相比,性能非常糟糕。使用XmlPullParser或SAX进行解析会更好


我知道,您已经有了使用DOM的代码,这就是您想要做的。但是请相信我,您不应该在移动设备上使用此功能。

您需要的DOM缺少哪些部分?您的库是否发出有关未实现或缺少方法的错误?Element.getTextContent()、Document.setXmlStandalone(),基本上是javax.xml.transform包中的所有内容(用于将DOM对象写回文件)。这是一个有趣的输入。你有没有基准/研究来支持你的观点?当我多年前查看时,它大约慢了10倍。基本上,从Resources().getXml()解析到XmlPullParser/SAX解析,再到DOM解析,速度会慢一个数量级(或更多)。随着Xerces/Xalan和JVM的改进,甚至垃圾收集算法的改进,XML世界的情况也发生了很大变化。我觉得DOM现在速度非常快,非常适合大多数用例(但不一定在Android上)。不幸的是,我也不能用事实来证明这一点……不过我们谈论的是Android。欢迎你做一些性能测试,我坦率地承认,我做我的测试已经有几年了。目前我强烈建议人们避免使用它。如果没有其他要求的话,仅仅将整个XML文件作为解析结构加载到RAM中对于移动设备来说并不太理想。