Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 VTD-XML XPath正在跳过前3条记录_Java_Xpath_Vtd Xml - Fatal编程技术网

Java VTD-XML XPath正在跳过前3条记录

Java VTD-XML XPath正在跳过前3条记录,java,xpath,vtd-xml,Java,Xpath,Vtd Xml,我正在使用VTD-XML将一个大的XML文件拆分为更小的XML文件。一切都很好,请接受: autoPilot.selectXPath(“//节点名”) 由于某种原因,它跳过了前3个节点 编辑:VTDXML作者指出,LOG.info(“xpath已找到”+ap.evalXPath()+“项”)不返回计数,但返回节点索引 新的拆分xml文件缺少原始文件的前三个节点 下面是基本的XML布局。我无法显示真正的xml数据,但它看起来是这样的: <rootNode> <

我正在使用VTD-XML将一个大的XML文件拆分为更小的XML文件。一切都很好,请接受:

autoPilot.selectXPath(“//节点名”)

由于某种原因,它跳过了前3个节点

编辑:VTDXML作者指出,
LOG.info(“xpath已找到”+ap.evalXPath()+“项”)不返回计数,但返回节点索引

新的拆分xml文件缺少原始文件的前三个节点

下面是基本的XML布局。我无法显示真正的xml数据,但它看起来是这样的:

<rootNode>
          <parentNode>
                      <contentNode>..children inside...</contentNode>
                      <contentNode>..children inside...</contentNode>
                      <contentNode>..children inside...</contentNode>
                      <contentNode>..children inside...</contentNode>
          </parentNode>
</rootNode>

编辑:添加到while循环的计数器。

正如vtd xml作者所建议的那样,我将计数器添加到while循环

        while((i=ap.evalXPath())!=-1){
            // if filesize is at max create a new File
            if(fos.getChannel().size() > maxFileSize){
                finishXml(fos,contentNode);
                LOG.info("Finished file with " + k + "nodes");
                fos = getNewXml(contentNode);
                k=0;

            }
            k++;
            long l = vn.getElementFragment();
            fos.write(ba, (int)l, (int)(l>>32));
            fos.write("\n".getBytes());
        }

我第一次运行它时,输出只缺少一条记录。然后,我删除了输出xml文件和文件夹,并在拆分器中重新运行它。这一次,它在日志中返回了正确的编号,并正确地分割了文件。我在删除创建的文件夹和文件时重复了多次该过程,也没有删除文件。我每次都得到相同的正确结果。我猜IDE或其他东西没有正确刷新

正如
vtdxml作者所建议的那样,我将计数器添加到while循环中

        while((i=ap.evalXPath())!=-1){
            // if filesize is at max create a new File
            if(fos.getChannel().size() > maxFileSize){
                finishXml(fos,contentNode);
                LOG.info("Finished file with " + k + "nodes");
                fos = getNewXml(contentNode);
                k=0;

            }
            k++;
            long l = vn.getElementFragment();
            fos.write(ba, (int)l, (int)(l>>32));
            fos.write("\n".getBytes());
        }

我第一次运行它时,输出只缺少一条记录。然后,我删除了输出xml文件和文件夹,并在拆分器中重新运行它。这一次,它在日志中返回了正确的编号,并正确地分割了文件。我在删除创建的文件夹和文件时重复了多次该过程,也没有删除文件。我每次都得到相同的正确结果。我猜IDE或其他东西没有正确刷新

您可以发布完整的xml吗?我没有看到其中的12个节点..我无法发布实际的XML文件,因为这将违反HIPPA。我可以向您保证,xml的这一部分中有12个节点,我在哪里可以找到这些信息。我在一两个月前发现了这个问题。@vtd xml作者去获取了最新版本,但仍然存在问题。此语句:LOG.info(“xpath已找到”+ap.evalXPath()+“items”);不会告诉您xpath求值结果中有多少项,如果第一项的节点索引值不为零,则只会告诉第一项的节点索引值,因此已经有问题了。您可以发布完整的xml吗?我没有看到其中的12个节点..我无法发布实际的XML文件,因为这将违反HIPPA。我可以向您保证,xml的这一部分中有12个节点,我在哪里可以找到这些信息。我在一两个月前发现了这个问题。@vtd xml作者去获取了最新版本,但仍然存在问题。此语句:LOG.info(“xpath已找到”+ap.evalXPath()+“items”);不会告诉您xpath求值结果中有多少项,它只会告诉第一项的节点索引值(如果不是零),因此已经有问题了