私のxmlは、<value>value1</value>
commons-digesterを使用して解析し、「value1」を文字列オブジェクトとして取得したいようなものです
1565 次
2 に答える
1
Lukaszの回答に沿って、値を保持するために別のオブジェクトを作成したくない場合は、 aStringBuilder
をスタックにプッシュしてからappend
using を呼び出すことができますaddCallMethod
。わかりやすくするために、ここにコードを再現しました。
public class StringExtractor {
public static void main(String[] args) throws IOException, SAXException {
final String xml = "<value>value1</value>";
final Digester digester = new Digester();
digester.push(new StringBuilder());
digester.addCallMethod("*/value", "append", 1);
digester.addCallParam("*/value", 0);
final String value = digester.parse(new StringReader(xml)).toString();
System.out.println(value);
}
}
于 2012-01-18T13:43:05.200 に答える
0
String は不変であるため、 「value1」をString
インスタンスに (by で)直接ロードすることはできないと思います。addObjectCreate
これの代わりに、ダイジェスターにメソッドを呼び出すように強制します。短いサンプル:
import java.io.File;
import org.apache.commons.digester.Digester;
public class Tester {
public static void main(String[] args) throws Exception {
Tester t = new Tester();
t.go();
}
private String read;
void go() throws Exception {
Digester digester = new Digester();
digester.push(this);
digester.addCallMethod("value", "readString", 1);
digester.addCallParam("value", 0);
digester.parse(new File("tester.xml"));
System.out.println("string: " + read );
}
public void readString(String a) {
this.read = a;
}
}
tester.xml :
<?xml version="1.0" encoding="UTF-8"?>
<value>value1</value>
于 2011-04-29T12:00:29.297 に答える