使用VTD-XML删除元素后删除剩余的新行

时间:2013-07-03 06:46:07

标签: java vtd-xml

我正在尝试使用VTD-XML从父元素中删除一组子元素。

不幸的是,在删除元素后,它会留下已删除元素之前占用的新行。 VTD-XML作者here的一篇关于VTD-XML的文章的读者也观察到了这种行为。我正在尝试找出如何删除这一新行。

我设法通过操纵存储在底层64位VTD令牌中的长度值来覆盖新行字符(额外的2个字节)来实现一点点成功。代码段如下:

// XMLModifier modifier
modifier.remove(vn.getElementFragment()+0x200000000L);

我已经测试过,这在VTD-XML示例的old_cd.xml中提供的ex_16上运行良好。

但是,当我在我的工作文件上尝试相同的方法时,当我尝试调用ModifyException时会抛出modifier.output()错误,特别是modifier.check2()抛出它。

问题

<击> 1。为什么上述方法会导致check2()失败?我不认为我溢出了VTD令牌上的位,文件是&lt; 2MB。见更新。
 2.有没有更好的方法来删除剩余的新行?

我仍然是VTD-XML的新手,所以我非常感谢任何建议和见解,并向更有经验的用户学习。

感谢您的帮助。

更新
哇,在写这个问题的过程中,我意识到我忘了考虑不同的字符编码并将调整长值更新为1字节修复了check2()问题! (花时间暂停并重新思考/写出问题的另一个原因)。

我还想向更有经验的用户询问是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

要回答您的问题,我认为这需要在API级别完成,并且需要注意一些额外的细节,例如删除所有周围空白区域或没有空白区域的选项。它需要在下一个版本中完成......