我们正在为我们的应用程序使用VTD XML。您可以帮助我们解决我们的应用程序中的问题。
问题是: 输入xml:
<root>
<name>suresh</name>
<address>Address</address>
</root>
output xml:
<root>
<address>Address</address>
</root>
But i want the output to be:
<root>
<address>Address</address>
</root>
当我用xmlmodifier删除元素时,它会为被删除的元素创建一个空格(新行)。
是否有可能删除该vtdxml?
答案 0 :(得分:1)
是的,在版本2.12中,在VTDNav中有一个名为expandWhiteSpace的方法,它的工作原理如下
public final long expandWhiteSpaces(long l)
v2.12中的新功能此方法将获取一个段描述符并返回一个新的描述符,其中包含输入段周围的所有前导和尾随空格它对CDATA没有影响。典型的用法是'expandWhiteSpaces(getElementFragment() )” 参数: l - 段的高32位长度,段的低32位偏移,单位是字节偏移 返回: 一个长64位段描述符 抛出: NavException
非常感谢Jimmy Zhang
我提供了有关用法的示例程序。
import com.ximpleware.*;
import java.io.*;
public class testExpandSpace {
public static void main(String[] args) throws VTDException,IOException{
// TODO Auto-generated method stub
VTDGen vg = new VTDGen();
AutoPilot ap = new AutoPilot();
XMLModifier xm = new XMLModifier();
if (!vg.parseFile("d://xml//testSuresh.xml",false))
return;
VTDNav vn=vg.getNav();
ap.bind(vn);
xm.bind(vn);
ap.selectXPath("//name");
int index=-1;
while((index=ap.evalXPath())!=-1)
{
System.out.println(" ===> "+vn.toString(index) +"===>");
long elementFragment=vn.getElementFragment();
xm.remove(vn.expandWhiteSpaces(elementFragment));
}
xm.output("d://xml//test1111.xml");
}
}