从XML中的所有节点值修剪所有前导/尾随空格的最快方法是什么?
我们有一个Java应用程序,它使用JDOM来解析XML文档。
答案 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);