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

===============>>#1 票数:5 已采纳

我会使用Stax来解析XML,它使用起来快速而简单。 我一直在上一个项目中使用它来解析高达24MB的XML文件。 java.net上有一个很好的介绍,它告诉你开始时需要知道的一切。

===============>>#2 票数:4

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

  • SAX ,您使用处理程序仅在XML中获取所需内容并放弃其余内容
  • DOM ,一直解析您的文件,并允许您以更像树的方式获取所有元素。

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

因此,根据您想要实现的目标,您可以使用这些方法之一。

===============>>#3 票数:3

您将需要使用org.xml.sax.XMLReaderhttp://docs.oracle.com/javase/7/docs/api/org/xml/sax/XMLReader.html )。

===============>>#4 票数:2

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

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

===============>>#5 票数:2

使用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;
}

===============>>#6 票数:0

下面是使用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));
        }   
    }
}

  ask by Matt Cummings translate from so

未解决问题?本站智能推荐:

1回复

Java自定义解析器,如XML

我有以下内容的example.ftl文件。 我想动态地在给定标签之前或之后添加一个标签,例如xpath (例如: /data/userInformation/addressInfo/addressList/#list/address/City )地址。 并希望替换标记名或内容。 如果我
2回复

使用SAX解析Java中的自定义XML响应

我正在尝试使用SAX解析类似于xml样式的响应。以下是我的响应格式。 在这里,我试图获取标记中每个值的值,例如info1.value,info2.value等。 我尝试了以下代码 我在输出中获得的info1值为空时,可以在这里帮助我吗
2回复

Java Sax XML Parser,解析XML标签中的自定义“值”?

我之前没有使用过很多XML,所以也许我对正确术语的无知在我搜索如何做到这一点时伤害了我。 我有下面的代码片段,用于解析下面的XML文件。 问题是它只能在<Tag>Value</Tag>获取XML值,但不能获取下面需要获取TagValue值的TagValue值,在这种情
4回复

在Jython中解析大型XML文档的最佳方法

我需要从Jython解析一个大的(> 800MB)XML文件。 XML没有深度嵌套,包含大约一百万个相关元素。 我需要将这些元素转换为真实对象。 我以前已经成功使用过nu.xom.* ,但是现在我已经从Java切换到Jython,该库失败并显示以下消息: 解析器在本文档
1回复

用Java将XML文档写入文件的最佳方法是哪种?

我正在尝试编写XML文件。 我可以使用以下代码创建文档。 我想将此文档写入具有缩进支持的文件中。 目前,我的代码如下所示。 这是解析XMl并写入文件的更好技术。 或者正在使用变压器更好的方法。 两种方法有什么区别? 哪些技术可以提供更好的性能?
14回复

比较Java中2个XML文档的最佳方法

我正在尝试编写一个应用程序的自动化测试,该测试基本上将自定义消息格式转换为XML消息并将其发送到另一端。 我有一组不错的输入/输出消息对,所以我要做的就是将输入消息发送进来,并侦听另一端的XML消息。 当需要将实际输出与预期输出进行比较时,我遇到了一些问题。 我的第一个想法只是对预期消
1回复

将XML文件解析为对象的最佳方法是什么? (Java)

我正在制作一个简单的JavaFX应用程序,以制作一个表,用于以XML格式对BLASTP输出进行数据分析。 它的运行速度并没有令人难以置信的慢,但我只想使该程序尽可能高效。 我添加的代码减少了很多,因为实际文件很大,但它们传达了总体轮廓。 我不是在寻找有人为我编写代码,而只是在需要加载大量x
5回复

在Java中解析XML字符串的最佳方法?

我正在使用javax.xml.parsers.DocumentBuilder在Java中解析字符串。 但是,没有直接解析String的函数,所以我这样做: 这是最好的方法吗? 我觉得必须有一个更简单的方法......谢谢!
9回复

在Java中解析XML dateTime的最佳方法是什么?

在Java中解析XML dateTime的最佳方法是什么? 合法日期时间值包括2002-10-10T12:00:00-05:00和2002-10-10T17:00:00Z 我可以使用一个很好的开源库,还是应该使用SimpleDateFormat或类似的?
3回复

如何使用SAX方法在Java中解析xml文档

我想解析一个类似于HTML文件的文件。 它不完全是一个html文件,它可以包含一些用户定义的标签。 我事先不知道标签如何预先相互嵌套。标签也可能具有属性。 我认为我应该使用SAX解析器。 Java是否具有内置的SAX。 遇到每个标签时可以调用函数吗?