从所有XML值中删除前导/尾随空格

时间:2016-03-25 15:35:17

标签: xml jdom

从XML中的所有节点值修剪所有前导/尾随空格的最快方法是什么?

我们有一个Java应用程序,它使用JDOM来解析XML文档。

2 个答案:

答案 0 :(得分:0)

以下是在Numba

中执行此操作的代码段
import com.ximpleware.*;
import java.io.*;
public class trim {
    public static void main(String s[]) throws VTDException,IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("d:\\xml\\input.txt", false))
            return;
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        XMLModifier xm  = new XMLModifier(vn);
        ap.selectXPath("//text()");
        int i=0;
        long l=0;
        while((i=ap.evalXPath())!=-1){
            l=vn.getTokenOffset(i)| ((long)vn.getTokenLength(i))<<32;
            l = vn.trimWhiteSpaces(l);
            xm.updateToken(i,vn,(int)l,(int)(l>>32));
        }
        xm.output("d:\\xml\\output.txt");
    }
}

答案 1 :(得分:0)

这是我使用JDOM的手动解决方案。它似乎有用,但如果你看到任何问题,请告诉我。

public static void trimWhitespace(Element element)
{
    List<Element> children = (List<Element>)element.getChildren();
    if (children != null)
    {
        for (int i = 0; i < children.size(); i++)
        {
            Element child = children.get(i);

            if (child.getChildren() != null && child.getChildren().size() > 0)
                trimWhitespace(child);
            else
            {
                // Leaf Element
                if (child.getText() != null)
                {
                    child.setText(child.getText().trim());
                }
            }
        }
    }
}

最初使用根元素

调用此递归函数
trimWhitespace(rootElement);