在 Java 中解析各种自定义 XML 文档的最佳方法

     2023-02-16     17

关键词:

【中文标题】在 Java 中解析各种自定义 XML 文档的最佳方法【英文标题】:Best method to parse various custom XML documents in Java 【发布时间】:2010-09-06 14:10:48 【问题描述】:

用 Java 解析多个离散的自定义 XML 文档的最佳方法是什么?

【问题讨论】:

向我们展示你已经走了多远——我们不会为你写的。你想用 DOM、SAX 还是其他的?到目前为止,您尝试过哪个?您看过哪些教程/文档? 使用 java dom api 或 sax 进行 xml 解析。给出更具体的 xml 结构。 尝试castor映射。 到目前为止你做了什么?你有代码给我们看吗? 如果效率是这样的话,我会使用 SAX 或根据个人喜好 - StAX 【参考方案1】:

下面是使用vtd-xml提取一些值的代码。

import com.ximpleware.*;

public class extractValue
    public static void  main(String s[]) throws VTDException, IOException
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("input.xml", false));
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        ap.selectXPath("/aa/bb[name='k1']/value");
        int i=0;
        while ((i=ap.evalXPath())!=-1)
            System.out.println(" value ===>"+vn.toString(i));
           
    

【讨论】:

【参考方案2】:

你会想要使用org.xml.sax.XMLReader (http://docs.oracle.com/javase/7/docs/api/org/xml/sax/XMLReader.html)。

【讨论】:

【参考方案3】:

使用dom4j 库

先阅读文档

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo 

    public Document parse(URL url) throws DocumentException 
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    

然后使用 XPATH 获取您需要的值

public void get_author(Document document) 
    Node node = document.selectSingleNode( "//AppealRequestProcessRequest/author" );
    String author = node.getText();
    return author;

【讨论】:

【参考方案4】:

如果您只需要解析,那么我建议您使用 XPath 库。这是一个很好的参考:http://www.ibm.com/developerworks/library/x-javaxpathapi.html

但您可能需要考虑将 XML 转换为对象,然后就没有限制了。 为此,您可以使用XStream,这是一个很棒的库,我经常使用

【讨论】:

【参考方案5】:

基本上,Java 中有两种主要的 XML 解析方法:

SAX,您使用 handler 仅在 XML 中获取您想要的内容并放弃其余部分 DOM,它会一直解析您的文件,并允许您以更像树的方式抓取所有元素。

另一种非常有用的 XML 解析方法是StAX,尽管比这些方法更新一些,并且仅在 Java6 之后才包含在 JRE 中。 StAX 被认为是介于基于树的 DOM 和基于事件的 SAX 方法之间的一种中间方法。它与 SAX 非常相似,因为解析非常大的文档很容易,但在这种情况下,应用程序从解析器“拉”信息,而不是解析“推送”事件到应用程序。你可以在here找到更多关于这个主题的解释。

因此,根据您想要实现的目标,您可以使用其中一种方法。

【讨论】:

从我在重复线程上的答案中复制,以提供有关各种方法的更多信息【参考方案6】:

我会使用Stax 来解析XML,它快速且易于使用。我在上一个项目中使用它来解析最大 24MB 的 XML 文件。 java.net 上有一个很好的介绍,它告诉您入门所需的一切。

【讨论】:

用于操作/编辑现有 xml 文档的最佳 java Xml 解析器

】用于操作/编辑现有xml文档的最佳javaXml解析器【英文标题】:bestjavaXmlparsertomanipulate/editanexistingxmldocument【发布时间】:2011-02-0104:14:11【问题描述】:任务:我有一个现有的xml文档(UTF-8),它使用xml命名空间和xml模式。我需要解... 查看详情

开发安全规约(三)——xml最佳安全实践

...体用来访问内部资源,而外部实体用来访问外部资源。在解析外部实体的过程中,XML的分析器支持众多网络协议和服务(DNS,FTP,HTTP,SMB等等),这取决于URLs的值。XML在Java中分两种解析方式:如上图实体lol9由10个lol8组成,由此类... 查看详情

使用 KXML 在 LWUIT 中解析自定义 XML 文件

】使用KXML在LWUIT中解析自定义XML文件【英文标题】:ParseacustomXMLfileinLWUITusingKXML【发布时间】:2012-07-0604:01:46【问题描述】:我正在使用LWUIT创建一个应用程序,它的部分功能就是这样,我正在使用KXML2_2-3-0来解析我的Xml文件。我... 查看详情

Java 解析 XML 文档给出“Prolog 中不允许的内容”。错误[重复]

】Java解析XML文档给出“Prolog中不允许的内容”。错误[重复]【英文标题】:JavaparsingXMLdocumentgives"Contentnotallowedinprolog."error[duplicate]【发布时间】:2011-02-0516:39:55【问题描述】:我正在用Java编写一个程序,它接受一个自定... 查看详情

在 JAVA 中解析大型 XML 文档

】在JAVA中解析大型XML文档【英文标题】:ParsinglargeXMLdocumentsinJAVA【发布时间】:2013-02-1410:59:57【问题描述】:我有以下问题:我有一个XML文件(大约1GB),并且必须向上和向下迭代(即不是连续的;一个接一个)以获得所需的... 查看详情

在官员中插入自定义目录的最佳方法

】在官员中插入自定义目录的最佳方法【英文标题】:BestwaytoinsertacustomTOCinofficer【发布时间】:2021-12-1518:48:57【问题描述】:我需要在officer文档中插入自定义目录。在这种情况下,我需要插入使用6级标题创建的表列表。我需要... 查看详情

phpxmlexpat解析器

...如需读取和更新-创建创建并处理-一个XML文档,您需要XML解析器。有两种基本的XML解析器类型:基于树的解析器:这种解析器把XML文档转换为树型结构。它分析整篇文档,并提供了API来访问树种的元素,例如文档对象模型(DOM)。... 查看详情

如何完全解析 XML 文档中的所有内容?

】如何完全解析XML文档中的所有内容?【英文标题】:HowtofullyparseeverythinginanXMLdocument?【发布时间】:2022-01-0309:00:28【问题描述】:这个问题被问了很多,但不幸的是,发布的答案对我不起作用。我正在尝试为具有自己的DTD等的... 查看详情

java自定义注解解析

...如果自定义了一个注解,但是没有对自定义的注解做任何解析,那么这个自定义注解完全没有任何作用,就像一个注释一样(但是注释主要是给人看的)。注解的存在主要是在一定程度上替换.XML配置文件(所以在使用注解的时... 查看详情

在 java 中解析非常大的 XML 文档(以及更多)

】在java中解析非常大的XML文档(以及更多)【英文标题】:ParsingverylargeXMLdocuments(andabitmore)injava【发布时间】:2010-09-2605:39:04【问题描述】:(以下全部用Java编写)我必须构建一个将可能非常大的XML文档作为输入的应用程序。... 查看详情

java中excel转换成xml,怎样自定义excel的列为属性,或者值

...面上自定义哦参考技术A可以使用HSSFWorkbook,这个是用来解析excel的,能够取到每一行和列,之前有写过这方面的解析,如有需要,我可以给你一个实例..追问是用户在页面上自定义哦追答使用HSSFWorkbook,,读出数据后,可以根据需... 查看详情

java示例代码_将解析和更改的DOM文档保存在xml文件中

java示例代码_将解析和更改的DOM文档保存在xml文件中 查看详情

java中使用dom解析xml文件

...端之间数据传输的主要方式。因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看。JAVA作为一种高级语言,具备多种方法解析XML文件,诸如DOM,SAX,另外还有DOM4J等框架可供使用,本篇使用一个具体的例子,... 查看详情

在 AS3 中为游戏存储 XML 数据的最佳方式

...在为AS3编写一个游戏,它从XML文件中提取数据,对其进行解析并将其组织成不同的对象(自定义AS3类)。当我尝试思考如何存储图像数据以及以后如何初始化它时,它开始变得有点棘手。目前我将角色的显示对象存储在自定义角... 查看详情

如何在 Java 中解析自定义的多种日期格式

】如何在Java中解析自定义的多种日期格式【英文标题】:HowtoparsecustommultipleDateformatsinJava【发布时间】:2020-12-3008:06:03【问题描述】:我想在Java中解析自定义的多种日期格式。这是我的代码场景1:模式顺序:yyMMdd\'h\'HHyyMMddDateTi... 查看详情

在java中解析xml文档的问题

代码部分:DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance(); DocumentBuilderdb=dbf.newDocumentBuilder();Documentdocument=(Document)db.newDocument();这行代码NodeListlist=document.getElementsByTagName();API中有方法getElementsByTagName();在eclipse中没有这个方法是怎... 查看详情

在 Lumen/Laravel 控制器中添加自定义逻辑的最佳实践

...l)为在线活动/活动应用程序创建一个API,该应用程序处理各种活动的现场注册和礼品兑换等事情。有时,某些具有非常特定功能的事件需要它们自己的自定义逻辑。 查看详情

android中自定义注解和注解解析(代码片段)

利用注解和注解解析原理写了一个开源项目comment-doc:comment-doc的主要作用是将类注释扫描到文档中。通过在类中添加类注解@Comment,在项目编译的时候,生成.java和.html文档。.java和.html文档会把一个包下的每个类具... 查看详情