【发布时间】:2015-12-17 03:32:33
【问题描述】:
我有不同的方法尝试根据路径更新/删除元素/令牌。
现在,每个方法,在编辑完成后,直接保存为文件,
VTDGen vg = new VTDGen();
vg.parseFile("input.xml", false);
vn.getNav();
AutoPilot ap = new AutoPilot(vn);
XMLModifier xm;
public void updateToken(String path)
{
xm = new XMLModifier(vn);
ap.selectXPath(path);
......
xm.updateToken(i,"hello");
......
xm.output("output.xml");
}
如果我继续再次调用此方法,它确实会保存,但它会用新的更改覆盖文件,我不希望这样,那我该怎么做呢?
我也尝试过使用
xm.outputAndReparse();
我将更新保存回NTDNav vn,并重复使用其余方法,但它破坏了方法的其余部分移动到节点(使用 AutoPilot)。
我想要的:根据路径调用更新token的方法,保存更新,用另一个路径再次调用方法,最后更新完成后,保存到文件中。
如果我有任何错误,请告诉我,因为我还是 VTD-XML 的新手。谢谢。
得到它的工作,这就是我所做的。
VTDGen vg = new VTDGen();
vg.parseFile("input.xml", false);
vn.getNav();
AutoPilot ap = new AutoPilot(vn);
XMLModifier xm = new XMLModifier(vn);
public void output()
{
....
xm.output("output.xml");
....
}
public void updateToken(String path)
{
ap.selectPath(path);
.........
xm.updateToken(i,"hello");
}
【问题讨论】:
-
您是否尝试将每个更新保存到一个单独的文件中(每个 xpath 一个 output.xml)?或者,您是否尝试将每个基于路径的更新应用到同一个文件并将所有更新聚合到一个输出中?
-
@vtd-xml-author 第二个选项。示例 - 如果我有 2 个要更新的路径,我调用第一个方法,返回更新后的版本,然后去更新第二个路径,然后完成后,所有输出都将在单个文件上。
-
简短的回答是:将“xm.output()”从updateToken方法中取出并放入main方法中,在你调用了所有updateToken方法之后..我会写一个更详细的描述作为对您问题的正式答复...