2

characters()次の XML ファイルがあります。検証を適用した後でも空白が入るのはなぜですか

<Employee>
<Name>
James
</Name>
<Id>
11
</Id>
</Employee>

タグの間にテキストを表示しようとしています。

 public class MyHandler extends DefaultHandler {

    boolean isName = false;
    boolean isId = false;

    @Override
    public void characters(char[] arg0, int arg1, int arg2) throws SAXException {
        if (isName) {
            System.out.println(new String(arg0, arg1, arg2));
            isName = false;
        }
        if (isId) {
            System.out.println(new String(arg0, arg1, arg2));
            isId = false;
        }
    }

    @Override
    public void startElement(String arg0, String arg1, String arg2,
            Attributes arg3) throws SAXException {          
        if (arg2.equalsIgnoreCase("Name")) {
            isName = true;
        }
        if (arg2.equalsIgnoreCase("Id")) {
            isId = true;
        }
    }

}

望ましい出力:

James
11

実際の出力:

James

11

空白が出力されるのはなぜですか?

4

3 に答える 3

2

<Name>タグの子であるテキスト ノードの実際の文字列値は次のとおりです。

\nJames\n

同様に、 のテキスト ノードの文字列値<Id>

\n11\n

where\nは改行文字を表します。どの改行も無視できる空白ではありません。それらを削除したい場合は、Java コードで自分で行う必要があります。

于 2013-10-06T07:58:09.007 に答える
0

検証パーサーを使用すると、ignorableWhitespace()代わりにメソッドを介して無視できる空白が報告されますcharacters().

それ以外の場合、パーサーはJavadoccharacters().を参照して空白を与えることができます。

于 2013-10-06T06:35:47.437 に答える