Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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中解析XML元素_Java_Xml_Dom_Jakarta Ee_Sax - Fatal编程技术网

在JAVA中解析XML元素

在JAVA中解析XML元素,java,xml,dom,jakarta-ee,sax,Java,Xml,Dom,Jakarta Ee,Sax,我想用java解析XML。它将是DOM或SAX。读一本书JAXP是一本不错的书。当我在谷歌上搜索到XERCES/XALAN的时候。哪个解析器是常用的 在SAX解析器中,如果我注册单个元素事件,SAX解析器将在遇到该元素后停止处理XML消息。在书中阅读DOM读取整个XML并加载到内存中,即使我想知道单个元素的值 我想用java解析XML。它将是DOM或SAX。读书 JAXP是一个很好的工具。当我在谷歌上搜索到XERCES/XALAN的时候。哪个 语法分析器是常用的吗 Xerces是DOM和SAX的

我想用java解析XML。它将是DOM或SAX。读一本书JAXP是一本不错的书。当我在谷歌上搜索到XERCES/XALAN的时候。哪个解析器是常用的

  • 在SAX解析器中,如果我注册单个元素事件,SAX解析器将在遇到该元素后停止处理XML消息。在书中阅读DOM读取整个XML并加载到内存中,即使我想知道单个元素的值

  • 我想用java解析XML。它将是DOM或SAX。读书 JAXP是一个很好的工具。当我在谷歌上搜索到XERCES/XALAN的时候。哪个 语法分析器是常用的吗

    Xerces是DOM和SAX的实现,它内置于JDK中。请参见
    javax.xml.parsers

    在SAX解析器中,如果我注册单个元素事件,SAX parse在遇到元素后停止处理XML消息

    没有

    在书中阅读DOM读取整个XML并加载到内存中,即使 我想知道单个元素的值


    是的。

    我不确定我是否掌握了您想要完成的所有细节,但是如果您有描述XML格式的xsd文件,我会说JAXB是一个不错的选择。它将使用xsd为您自动生成类。然后,您可以轻松地来回处理—封送和解封送数据。最近,当我处理类似的任务时,Netbeans的自动化水平给我留下了深刻的印象

    希望我关于研究JAXB的建议能有所帮助

  • 您提到的所有上述解析器都非常优秀。我个人的偏好是XERCES,如果应用程序执行大量XML处理,否则,“内置”解析器就足够好了

  • 您需要处理SAX解析器中的每个事件,并忽略您不感兴趣的事件。您可以通过“销毁”解析器对象在任何时候停止解析。如果您只对大型消息中的一个或两个元素感兴趣,那么SAX就是一个不错的选择。如果您对所有或大部分元素感兴趣,那么使用DOM解析器,您的性能会受到轻微的影响,但是,“给我想要的”API比“给我想要的”SAX API的代码更清晰


  • 对于简单的XML到POJO,我发现XStream是Java中最不烦人的解析器:


    DOM和SAX是接口,Xerces是这些接口最流行的实现。事实上,Xerces有两个版本:一个来自Apache,另一个内置于Sun/OracleJDK中。JDK中的一个是bug;首选Apache中的一个


    因为您才刚刚起步,所以它可能比DOM和SAX更值得研究。SAX是一个非常低级的接口,提供了良好的性能,但功能很少:如果这样做的话,您可以期望在应用程序中编写相当多的复杂代码。DOM为您提供了一个XML树模型,但是有更好、更简单的接口可以做同样的事情:JDOM提供了您需要的一切,并且比DOM更易于使用。

    非常感谢您提供的信息。XERCES是一个独立的JAR文件还是JDK附带的?JAXP比xerces好吗?另外,如果我使用SAX解析器并销毁解析器对象,那么当我想要访问大型消息的一个或两个元素时,它是否有效?否则,它的工作方式与DOM解析器相同?使用它有什么好处?另外,如果我想为使用webservice创建SOAP消息,我可以使用xerces解析器吗?我应该使用什么?SAX解析器的优点是,它在解析元素时会将元素交给您。因此,如果您只想在将xml传递到另一个进程之前了解一些国家代码,这是非常有效的。另一方面,DOM解析器构建嵌套字典和列表的复杂结构,在访问任何元素之前,必须等待解析所有XML并构建完整的树。如果你只想检查一个或两个元素,它的成本非常高。因为SAX是一个流解析器,所以您可以处理任何大小的文档。DOM解析器需要适合内存中的所有内容。非常感谢您提供的信息。XERCES是一个独立的JAR文件还是JDK附带的?JAXP比xerces好吗?另外,如果我使用SAX解析器并销毁解析器对象,那么当我想要访问大型消息的一个或两个元素时,它是否有效?否则,它的工作方式与DOM解析器相同?使用它有什么好处?另外,如果我想为使用webservice创建SOAP消息,我可以使用xerces解析器吗?我应该使用什么?@Arav(1)正如我已经说过的,Xerces内置于JDK中。JAXP是Xerces的包装器。(2) SAX非常适合这种用途。(3) SAX的工作方式与DOM不同,因为它不构建DOM,它只是在文档经过时传递事件。(4) 解析器解析现有消息,但不创建新消息。(5) JAXP包含一个DocumentBuilder,猜猜看是什么构建了文档;但是Java已经有了API来构建SOAP请求。除了从XML模式生成Java模型外,还可以从自己的域类开始,使用JAXB注释自定义XML表示: