VTD XML删除元素后删除空格

时间:2016-05-01 21:26:47

标签: xml element spaces removing-whitespace vtd-xml

我们正在为我们的应用程序使用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?

1 个答案:

答案 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");
    }
}