我正在尝试使用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()
问题! (花时间暂停并重新思考/写出问题的另一个原因)。
我还想向更有经验的用户询问是否有更好的方法。
答案 0 :(得分:0)
要回答您的问题,我认为这需要在API级别完成,并且需要注意一些额外的细节,例如删除所有周围空白区域或没有空白区域的选项。它需要在下一个版本中完成......