documentBuilderFactory dbf = documentBuilderFactory.newInstance(); documentBuilder db = dbf.newdocumentBuilder(); document dom = db.parse("file.xml"); Element docEle = dom.getdocumentElement(); NodeList nl = docEle.getChildNodes(); int length = nl.getLength(); for (int i = 0; i < length; i++) { if (nl.item(i).getNodeType() == Node.ELEMENT_NODE) { Element el = (Element) nl.item(i); if (el.getNodeName().contains("staff")) { String name = el.getElementsByTagName("name").item(0).getTextContent(); String phone = el.getElementsByTagName("phone").item(0).getTextContent(); String email = el.getElementsByTagName("email").item(0).getTextContent(); String area = el.getElementsByTagName("area").item(0).getTextContent(); String city = el.getElementsByTagName("city").item(0).getTextContent(); } } }遍历所有子项,
nl.item(i).getNodeType() ==Node.ELEMENT_NODE并用于过滤出文本节点。如果XML中没有其他内容,则剩下的是人员节点。
对于资料下的每个节点(名称,电话,电子邮件,区域,城市)
el.getElementsByTagName("name").item(0).getTextContent();el.getElementsByTagName("name")会在“东西”下提取“名称”节点,为.item(0)您提供第一个节点,并
.getTextContent()在其中获取文本内容。
编辑: 由于我们有杰克逊,所以我将以其他方式进行。为对象定义一个pojo:
public class Staff { private String name; private String phone; private String email; private String area; private String city;...getters setters}然后使用杰克逊:
JsonNode root = new XmlMapper().readTree(xml.getBytes()); ObjectMapper mapper = new ObjectMapper(); root.forEach(node -> consume(node, mapper));private void consume(JsonNode node, ObjectMapper mapper) { try { Staff staff = mapper.treeToValue(node, Staff.class); //TODO your job with staff } catch (JsonProcessingException e) { e.printStackTrace(); }}


