搞一个解析工具类
public class ParseXML { public static Document readxml(String path) { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); Document document = null; try { // DOM parser instance DocumentBuilder builder = builderFactory.newDocumentBuilder(); // parse an XML file into a DOM tree document = builder.parse(new File(path)); } catch (ParserConfigurationException e) { e.printstacktrace(); } catch (SAXException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); } return document; } }
实际解析
public Person getPersonByID(String id) { Person person = new Person(id,0); // 从指定路径加载文件内容 Document personDoc = ParseXML.readxml(XML_PATH); Element rootElement = personDoc.getDocumentElement(); // 获取第一层级所有元素 NodeList nodes = rootElement.getChildNodes(); // 解析根节点 for (int i = 0; i < nodes.getLength(); i++) { Node user = nodes.item(i); NodeList userInfo = user.getChildNodes(); if (user.getNodeType() == Node.ELEMENT_NODE) { Element userElement = (Element) nodes.item(i); String personId = userElement.getAttribute("id"); if (StringUtils.equals(personId,id)) { for (int j = 0; j < userInfo.getLength(); j++) { Node userDeatil = userInfo.item(j); // 解析单层属性 if (userDeatil.getNodeName() != "#text") { if (userDeatil.getNodeType() == Node.ELEMENT_NODE) { if (StringUtils.equals(userDeatil.getNodeName(),"name")) { person.setName(userDeatil.getTextContent()); } if (StringUtils.equals(userDeatil.getNodeName(),"age")) { person.setAge(Integer.parseInt(userDeatil.getTextContent())); } } } NodeList userMeta = userDeatil.getChildNodes(); for (int k = 0; k < userMeta.getLength(); k++) { Node skill = userMeta.item(k); if (userMeta.item(k).getNodeName() != "#text") { if (skill.getNodeType() == Node.ELEMENT_NODE) { if (StringUtils.equals(skill.getNodeName(),"skillName")) { person.setHobbit(skill.getTextContent()); } } } } } } } } return person; }
xml文件
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="1"> <name>kewen</name> <age>20</age> <skill> <skillName>Dota</skillName> <skillType>Game</skillType> </skill> </person> <person id="2"> <name>kewen2</name> <age>20</age> <skill> <skillName>Dota2</skillName> <skillType>Game</skillType> </skill> </person> <person id="3"> <name>kewen3</name> <age>20</age> <skill> <skillName>Dota3</skillName> <skillType>Game</skillType> </skill> </person> </persons>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。