我正在尝试编写一段可以解析任何xml并打印其内容的代码。我正在使用DOM解析器。我能够获取xml的根标记的名称,但是无法获得直接子项的标记名称。如果使用方法'getElementsByTagName'知道节点名称,则可以轻松完成此操作。有没有办法摆脱这种困境?
我的代码是这样的:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
doc.getDocumentElement().getNodeName() // this gets me the name of the root node.
现在我如何获取直接子节点的名称,以便我可以使用getElementsByTagName(“x”)遍历xml。
提前致谢。
答案 0 :(得分:3)
getChildNodes()
返回元素的所有子元素。该列表将包含更多元素,因此您必须检查每个子节点是否为元素:
NodeList nodes = doc.getDocumentElement().getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.get(i);
if (node instanceof Element) {
Element childElement = (Element) node;
System.out.println("tag name: " + childElement.getTagName());
}
}