当前位置: 首页 > 知识库问答 >
问题:

使用VTD-XML解析巨大的XML文件

邓子濯
2023-03-14

为了在巨大的xml文件中执行XPATH查询,我阅读了许多喜欢VTD-xml的文章,因此我复制了这些文章中的代码:

import com.ximpleware.extended.*;
public class MainVTD {
    public static void main(String[] s) throws Exception{
        VTDGenHuge vg = new VTDGenHuge();
        if (vg.parseFile("./resource/init/dblp_3.xml",true,VTDGenHuge.MEM_MAPPED)){
            VTDNavHuge vnh = vg.getNav();
            AutoPilotHuge aph = new AutoPilotHuge(vnh);
            aph.selectXPath("/*/*[not(name() = name(preceding-sibling::*[1]))]");
            int i ;
            while ((i=aph.evalXPath())!=-1){
                System.out.println(" element name is "+vnh.toString(i));
            }
        }else System.out.println("Doc not mapped");
    }
}

但当我运行它时没有结果,所以这意味着XML文件没有映射到内存中。。。我的问题是如何在VTD-xml中强制映射xml文件?

共有1个答案

雷逸仙
2023-03-14

输入下面的代码段并打印出异常,以查看出了什么问题。。。

import java.io.IOException;

import com.ximpleware.extended.*;
public class testExtendedVTD {
    public static void main(String s[]){
        VTDGenHuge vgh = new VTDGenHuge();
        XMLBuffer xb = new XMLBuffer(); //or XMLMemeMappedBuffer
        try {
            xb.readFile("test.xml");
            vgh.setDoc(xb);
        } catch (ParseExceptionHuge e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
 类似资料:
  • 问题内容: 我如何在Java或C中使用vtd-xml解析如下的xml文件? 任何帮助,将不胜感激。 谢谢 问题答案: 我想其中有些取决于您要如何解析文件。 这是一个“非生产”示例,其中使用了一些有用的技术,包括: XPath选择(此处仅使用“ / *”) 浏览所有同级节点 通过子节点向下看 使用AutoPilot将节点属性提取到地图中 希望能帮助到你 产生以下输出: 添加带有AutoPilot循环

  • 如何在java或C中使用vtd xml解析如下xml文件? 任何帮助都将不胜感激。 谢谢

  • 问题内容: 我正在尝试将DMOZ内容/结构XML文件解析为MySQL,但是所有现有的脚本都已经很老了并且不能很好地工作。如何在PHP中打开大型(+ 1GB)XML文件进行解析? 问题答案: 只有两个php API真正适合处理大文件。第一个是旧的expatapi,第二个是较新的XMLreader函数。这些api读取连续流,而不是将整个树加载到内存中(这是simplexml和DOM所做的)。 例如,您

  • 我必须对VTD-XML库进行性能测试,以便不仅进行简单的解析,而且在解析中进行额外的转换。所以我有30MB的输入XML,然后用自定义逻辑将其转换为其他XML。因此,我想消除所有的想法,这减缓了整个过程,从我这边来(因为没有很好地使用VTD库)。我试图搜索优化提示,但找不到。我认为: '0'. 选择selectXPath或selectElement最好使用什么? > 使用不带名称空间的解析要快得多。

  • 我对如何做到这一点有点困惑,所有的文档/示例都展示了如何读取和编辑xml文档,但似乎没有任何从头开始创建xml的明确方法,我宁愿不必将我的程序与虚拟xml文件一起发布以编辑一个。有什么想法吗?谢谢。

  • VTD-XML是一种新的XML处理API,它能够克服DOM和SAX的一些问题。VTD-XML能够在内存中对XML进行快速检查并提供XPath查询支持。 在它的主页上有详细的API描述,源代码,文档和例子。