Xml处理——快速定位Xml节点和获取数据

前端之家收集整理的这篇文章主要介绍了Xml处理——快速定位Xml节点和获取数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

场景一:快速定位到某一个具体的节点,并获取节点数据

  1. public static Node getNode(Document doc,String path) {
  2. if (doc != null) {
  3. if (doc.selectSingleNode(path) != null) {
  4. return doc.selectSingleNode(path);
  5. }
  6. }
  7. return null;
  8. }

场景二:获取某个列表类型的节点的数据

  1. public static List<Node> getNodeList(Document doc,String path) {
  2. if (doc != null) {
  3. if (doc.selectNodes(path) != null) {
  4. return doc.selectNodes(path);
  5. }
  6. }
  7. return null;
  8. }

场景三:获取指定节点的数据,并将数据注入到指定的JavaBean中(前提是JavaBean已经进行了注解的处理)

调用示例:

getXmlNode("xml格式的string类型",“指定节点的路径”,"想要转换成的javaBean类","节点替换前的名称","节点替换后的名称")

getXmlNode(xml,"//item/degreeInfo",Student.class,"degreeInfo","personBaseInfo");

  1. public static Object getXmlNode(String xml,String path,Class<?> cls,String... jss) {
  2. Document doc;
  3. String strXml = null;
  4. try {
  5. doc = DocumentHelper.parseText(xml);
  6. if (doc != null) {
  7. if (doc.selectSingleNode(xpath) != null) {
  8. strXml = doc.selectSingleNode(path).asXML();
  9. }
  10. }
  11. if (jss != null && jss.length >= 2 && StringUtils.hasLength(strXml)) {
  12. return XmlBase.xmlToBean(cls,strXml.replace(jss[0],jss[1]));
  13. } else if (StringUtils.hasLength(strXml)) {
  14. return XmlBase.xmlToBean(cls,strXml);
  15. }
  16.  
  17. } catch (DocumentException e) {
  18. e.printStackTrace();
  19. }
  20. return null;
  21. }

场景四:获取xml某列表节点数据,并注入到相应的JavaBean中(前提是JavaBean已经进行了注解的处理)

getXmlNode("xml格式的string类型",JavaBean列表对象,"节点替换后的名称")

getXmlNode(xml,list,"personBaseInfo");

  1. public static void getXmlNode(String xml,String xpath,List list,String... jss) {
  2. Document doc;
  3. String strXml = null;
  4. try {
  5. doc = DocumentHelper.parseText(xml);
  6. if (doc != null) {
  7. if (doc.selectNodes(xpath) != null) {
  8. List<Node> lst= doc.selectNodes(xpath);
  9. for(Node l:lst){
  10. strXml=l.asXML();
  11. if (jss != null && jss.length >= 2 && StringUtils.hasLength(strXml)) {
  12. list.add(XmlBase.xmlToBean(cls,jss[1])));
  13. }else{
  14. list.add(XmlBase.xmlToBean(cls,strXml));
  15. }
  16. }
  17. }
  18.  
  19. }
  20.  
  21. } catch (DocumentException e) {
  22. e.printStackTrace();
  23. }
  24. }

猜你在找的XML相关文章