Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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
DOM与saxjava_Java_Android_Parsing_Dom_Xml Parsing - Fatal编程技术网

DOM与saxjava

DOM与saxjava,java,android,parsing,dom,xml-parsing,Java,Android,Parsing,Dom,Xml Parsing,我有一个很大的xml文件,可以从互联网上下载。为了解析它,我尝试使用DOM解析器,但是它不允许我跳过某些标记,因为它会给我一个错误。有办法解决这个问题吗?如果我理解正确,SAX解析器允许您跳过标记,而DOM则不允许。如果是这样的话,我不明白DOM解析器的优点是什么。提前感谢。DOM被设计为一个独立于语言的对象模型,用于保存任何XML数据,因此是一个庞大而复杂的系统。它非常适合两阶段的方法,即首先加载XML文档,然后对其执行各种操作。 另一方面,SAX被设计为使用单相方法的相当轻的系统。使用SAX

我有一个很大的xml文件,可以从互联网上下载。为了解析它,我尝试使用DOM解析器,但是它不允许我跳过某些标记,因为它会给我一个错误。有办法解决这个问题吗?如果我理解正确,SAX解析器允许您跳过标记,而DOM则不允许。如果是这样的话,我不明白DOM解析器的优点是什么。提前感谢。

DOM被设计为一个独立于语言的对象模型,用于保存任何XML数据,因此是一个庞大而复杂的系统。它非常适合两阶段的方法,即首先加载XML文档,然后对其执行各种操作。 另一方面,SAX被设计为使用单相方法的相当轻的系统。使用SAX,在加载文档时执行用户指定的操作。一些应用程序使用SAX生成更小的对象模型,过滤掉不感兴趣的信息,然后进行类似于DOM的处理。 请注意,尽管DOM和SAX是众所周知的“标准”XMLAPI,但还有很多其他可用的API,有时使用非标准API可能会更好。对于XML来说,重要的部分总是数据;代码可以重写

一些要点:

  • SAX比DOM快
  • SAX适用于大型文档,因为 与Dom相比,它占用的内存更少
  • SAX花费的时间更少 读取作为Dom的文档需要更多时间
  • 用萨克斯我们可以 访问数据,但我们不能修改数据。使用Dom,我们可以修改数据
  • 无论何时何地,我们都可以停止SAX解析
  • SAX是顺序解析,但使用DOM我们也可以向后移动
  • 解析机器生成的代码SAX更好 可读文档DOM很有用

  • 他们都能跳过标签吗?还是只有SAX可以?换句话说,DOM需要解析所有标记吗?DOM不能跳过标记,它以树模型的形式返回所有信息,然后从树模型中选择需要的特定信息。。。所以要回答您的问题,没有DOM不能跳过标记,只有SAX可以。有不同的方法只从树的某个级别(如树的lowset级别)返回信息,但您仍然需要遍历所有标记才能执行此操作