2016-03-25 10 views
1

XMLのすべてのノード値から先頭/末尾の空白をすべて削除する最も簡単な方法は何ですか?すべてのXML値から先頭/末尾の空白を削除する

JDOMを使用してXML文書を解析するJavaアプリケーションがあります。ここで

+0

JDOMは多少のパフォーマンスとメモリ使用量の面で最悪のXML APIで、http://sdiwc.us/digitlib/journal_paper .php?paper = 00000582.pdf –

答えて

0

これはJDOMと私のマニュアルソリューションですVTD-XML

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

でそれを行うためのコードスニペットです。それはうまくいくようですが、もしあなたが何かを見たら、私に何か問題を知らせてください。

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); 
関連する問題