1
XMLのすべてのノード値から先頭/末尾の空白をすべて削除する最も簡単な方法は何ですか?すべてのXML値から先頭/末尾の空白を削除する
JDOMを使用してXML文書を解析するJavaアプリケーションがあります。ここで
XMLのすべてのノード値から先頭/末尾の空白をすべて削除する最も簡単な方法は何ですか?すべてのXML値から先頭/末尾の空白を削除する
JDOMを使用してXML文書を解析するJavaアプリケーションがあります。ここで
これは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");
}
}
でそれを行うためのコードスニペットです。それはうまくいくようですが、もしあなたが何かを見たら、私に何か問題を知らせてください。
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);
JDOMは多少のパフォーマンスとメモリ使用量の面で最悪のXML APIで、http://sdiwc.us/digitlib/journal_paper .php?paper = 00000582.pdf –