读取和打印相同的xml元素标签android

时间:2013-09-17 06:12:33

标签: android android-xml

我想从下面的xml打印每个章节的每个VERS。我的问题是,当我打印项目时,每章只打印vers的第一个元素。然后,相同的元素循环x次,具体取决于vers的数量。

1 个答案:

答案 0 :(得分:0)

VERS = parser.getValue(e, "VERS");始终为您提供章节中的第一个VERS。相反,你必须遍历所有VERS - 在你的情况下是NodeList的{​​{1}}。

示例:

替换nodeChapterList

VERS = parser.getValue(e, "VERS");

编辑:我再次检查了您的代码并更改了使其正常工作所需的内容。

VERS = parser.getValue((Element) nodeChapterList.item(chap), "VERS");

将你圣经中的文字放在 public final void test(Context context) { try { InputStream getXML = context.getResources().getAssets().open("bible.xml"); DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = parser.parse(getXML); NodeList verses = document.getElementsByTagName("VERS"); for (int i = 0; i < verses.getLength(); i++) { Node vers = verses.item(i); String chapter_number = vers.getParentNode().getAttributes().getNamedItem("cnumber").getNodeValue(); String vers_text = vers.getChildNodes().item(0).getNodeValue(); String vers_number = vers.getAttributes().getNamedItem("vnumber").getNodeValue(); Log.d("STACKOVERFLOW", "vers: " + chapter_number + ", " + vers_number + " >" + vers_text + "<"); } } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (FactoryConfigurationError e) { e.printStackTrace(); } } 的文件中(顺便说一下。我很高兴你在前7天后停止复制圣经:-)我得到了这个输出:

asset/bible.xml

DOM和代码的说明:

  • 我直接从经文列表开始。为了得到这一章,我只是去父母(这是章节)并获得它的属性。

  • DOM的元素(如08-24 22:35:35.463: D/STACKOVERFLOW(17950): vers: 1, 1 >Au commencement, Dieu créa les cieux et la terre.<true, 1 08-24 22:35:35.463: D/STACKOVERFLOW(17950): vers: 1, 2 >La terre était informe et vide: il y avait des ténèbres à la surface de l'abîme, et l'esprit de Dieu se mouvait au-dessus des eaux.<true, 1 08-24 22:35:35.473: D/STACKOVERFLOW(17950): vers: 1, 3 >Dieu dit: Que la lumière soit! Et la lumière fut.<true, 1 .... )将CDATA视为额外的子节点。这就是为什么我在每个<VERS/>上额外getChildNodes()