0

ファイル res/raw/lvl.xml を含む Android プロジェクトがあります。

<?xml version="1.0"  encoding="utf-8"?>

<Level>

  <dimensions>
    <a>5</a>
    <b>5</b>
  </dimensions>

    .
    .
    .
</Level>

私のJavaコードは次のとおりです

InputStream input = this.getResources().openRawResource(R.raw.lvl);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = buider.parse(input);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("dimensions");
Node node = nList.item(0);
int a = Integer.parseInt(node.getFirstChild().getNodeValue().trim());

最後の行は解析例外をスローします。node.getNodeValue().trim() は "\t\t\n\t" です。

4

2 に答える 2

0

あなたがやろうとしていることを正確に理解できませんでした...しかし..それが役立つ場合は以下を参照してください

public class Parsing {

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
        Parsing parse = new Parsing();
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new File("x.xml"));
        doc.getDocumentElement().normalize();
        NodeList nList = doc.getElementsByTagName("dimensions");
        Node node = nList.item(0);
        for (Node childNode = node.getFirstChild();
                childNode != null;) {
            //do something 
            System.out.println(childNode.getNodeName());
            System.out.println(childNode.getTextContent());
            Node nextChild = childNode.getNextSibling();
            childNode = nextChild;
        }
    }
}
于 2013-02-16T19:39:03.887 に答える
0

<dimensions>ではなく、タグを見ています。見て:ab

NodeList nList = doc.getElementsByTagName("dimensions");
Node node = nList.item(0);
int a = Integer.parseInt(node.getNodeValue().trim());

nameの最初の (index 0) 要素を取得していますdimensions。その子ではありません。

表示される値 ( \t\t\n\t) は、dimensions' 子ノードが削除された後のコンテンツの残りの部分です。

于 2013-02-16T18:34:19.243 に答える