2

このxmlファイルを解析したいと思います:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="descripciones">
        <item>one</item>
        <item>two</item>
    </string-array>
</resources>

元のファイルは、はるかに大きな配列です。これが私のコードです:

builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new FileInputStream("descripciones.xml"));
Element rootElement = document.getDocumentElement();
NodeList nl = rootElement.getElementsByTagName("string-array");

Element nl1 =(Element) nl.item(0);
NodeList nl2=nl1.getChildNodes();

for(int i=0; i<nl2.getLength();i++){
    String text=nl2.item(i).getTextContent();
    System.out.println(i+text);
}

問題は、空のアイテムを取得する各行ごとに取得した結果を印刷するときです。

1 one
2
3 two
4

それを修正する方法はありますか?タグ間のデータを抽出するより良い方法はありますか?

4

3 に答える 3

2

string-arrayノードの前後のテキスト ノードを含む、のすべての子ノードを処理していますitem。試す

int pos = 0;
for(int i=0; i<nl2.getLength();i++){
    Node n = nl2.item(i);
    if (n.getNodeType() == Node.ELEMENT_NODE)
    {
        pos++;
        String text=n.getTextContent();
        System.out.println(pos + text);
    }
}

これにより、 の要素ではない子がスキップされstring-arrayます。

于 2012-09-18T23:57:10.443 に答える
0

たとえば、 getTextContent() で trim() を実行する必要があります

String text=nl2.item(i).getTextContent().trim();
于 2012-09-18T22:38:59.560 に答える