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

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