我正在努力处理for
循环条件,该条件可以将所有xml
子元素添加到ArrayList
。我可以添加每个子节点而不使用如下所示的循环
testData.add(eElement.getElementsByTagName("server").item(0).getTextContent());
我对如何使用for循环添加所有元素感到困惑。这是我的测试代码:
ArrayList<String> testData = null;
testData = new ArrayList<>();
File fXmlFile = new File("C://Javaseleniumworld/soemthing.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("staff");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
testData.add(eElement.getElementsByTagName("server").item(0).getTextContent());
testData.add(eElement.getElementsByTagName("username").item(0).getTextContent());
testData.add(eElement.getElementsByTagName("password").item(0).getTextContent());
testData.add(eElement.getElementsByTagName("firstname").item(0).getTextContent());
testData.add(eElement.getElementsByTagName("dobmm").item(0).getTextContent());
testData.add(eElement.getElementsByTagName("dobdd").item(0).getTextContent());
testData.add(eElement.getElementsByTagName("dobyyyy").item(0).getTextContent());
答案 0 :(得分:0)
假设您的staff
元素仅包含没有其他嵌套元素的子元素,则访问所有这些子元素的最简单方法是
NodeList childEls = eElement.getElementsByTagName("*");
然后您可以循环显示NodeList
并将每个元素的getTextContent()
添加到ArrayList
。
或者您需要处理eElement.getChildNodes()
并确保只通过检查子节点集合中每个节点上的'getNodeType()`来将元素节点添加到列表中。
答案 1 :(得分:0)
var all = document.getElementsByTagName("*");
for (var i=0, max=all.length; i < max; i++) {
// Do something with the element here like add element in arraylist
}