1. DOM解析xml

 /*** DOM解析xml* @param xmlPath xml文件路径*/public static void getInfoByDom(String xmlPath){DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();try {Document parse = documentBuilderFactory.newDocumentBuilder().parse(xmlPath);NodeList childNodes = parse.getElementsByTagName("student");for (int i =0;i<childNodes.getLength();i++){NodeList childNodes1 = childNodes.item(i).getChildNodes();System.out.println(childNodes.item(i).getNodeName());for (int j =0; j<childNodes1.getLength();j++){if(childNodes1.item(j).getNodeType() == Node.ELEMENT_NODE){System.out.println(childNodes1.item(j).getNodeName()+childNodes1.item(j).getTextContent());}}}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}## xml模板类型
<school><student><no>1001</no><name>小明</name><score>20</score></student><student><no>1002</no><name>小红</name><score>80</score></student>
</school>

xml转json

 /*** xml转json数据*/public static void XMLtoJSON(String xmlPath){XMLSerializer xmlSerializer = new XMLSerializer();JSON json = xmlSerializer.readFromFile(new File(xmlPath));System.out.println(json.toString());}

2. dom4j解析xml

/*** dom4j解析xml* @param xmlPath* @return*/public static  Map<String,String> getInfoByDom4j(String xmlPath){Map<String,String> xml=new HashMap<String,String>();SAXReader saxReader = new SAXReader();try {org.dom4j.Document doc1 = saxReader.read(new FileInputStream(new File(xmlPath)));org.dom4j.Document doc = saxReader.read(new BufferedReader(new FileReader(xmlPath)));Iterator iterator = doc1.getRootElement().elementIterator();while (iterator.hasNext()){Element next = (Element) iterator.next();Iterator iterator1 = next.elementIterator();while (iterator1.hasNext()){Element next1 = (Element) iterator1.next();System.out.println(next1.getName()+next1.getText());}}} catch (DocumentException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}return xml;}

3. SAX解析 xml

/*** SAX解析 xml* @param xmlPath*/public static void getInfoBuSAX(String xmlPath){SAXParser saxParser = null;SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();try {saxParser = saxParserFactory.newSAXParser();saxParser.parse(new FileInputStream(xmlPath),new MySaxHandler());} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}private  static class  MySaxHandler extends DefaultHandler {boolean hasAttribute = false;Attributes attributes = null;@Overridepublic void startDocument() throws SAXException {System.out.println("文档解析");}@Overridepublic void endDocument() throws SAXException {System.out.println("文档结束");}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if (qName.equals("users")) {return;}if (qName.equals("user")) {return;}if (attributes.getLength() > 0) {this.attributes = attributes;this.hasAttribute = true;}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {if (hasAttribute && (attributes != null)) {for (int i = 0; i < attributes.getLength(); i++) {System.out.print(attributes.getQName(0) + ":"+ attributes.getValue(0));}}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {System.out.print(new String(ch, start, length));}}

4. 解析规则的xml文件

package fu.test;import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import java.util.Set;
/*** @Author fdp* @Description 解析 <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 规则的xml文件* @Date 16:14 2022/2/18* @Param * @return **/
public class XmlReadTest {private static String filePath = "test.xml";public static void main(String[] args) {Properties prop = getXMLByPropertiesLoadUtil(filePath);Set<Object> propSet = prop.keySet();for (Object key:propSet) {try {String value = new String(prop.getProperty((String) key).getBytes("iso-8859-1"), "utf-8");System.out.println(value);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}}/*** * @param filePath* @return Properties properties*/public static Properties getXMLByPropertiesLoadUtil (String filePath){Properties properties = new Properties();try {properties = PropertiesLoaderUtils.loadAllProperties(filePath);} catch (IOException e) {e.printStackTrace();}return properties;}
}

maven依赖的pom文件

     <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.1</version></dependency><dependency><groupId>org.jdom</groupId><artifactId>jdom</artifactId><version>1.1</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><dependency><groupId>xom</groupId><artifactId>xom</artifactId><version>1.2.5</version></dependency>

JAVA中xml文件解析几种方式相关推荐

  1. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  2. java解析xml文件的几种方式(DOM解析)

    好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...

  3. java sax xml文件解析_java解析xml文件-DOM/SAX

    java解析xml文件的两种方式 1:DOM 原理:把整个文档加载到内存,转化成dom树,之后应用程序可以随机的访问dom树的任何数据,灵活 快,但消耗内存 一个简单的xml 使用java解析 //b ...

  4. C# 读取XML文件的几种方式

    在开发过程中,我们有时会需要保存到本地一些结构化数据或者配置信息,这时就可以选择用xml文件.当然xml的用途也不仅仅是这些. 这一篇来谈一谈关于读取xml文件的几种方式: 我们有以下两个文件,一个是 ...

  5. Java中HashMap遍历的两种方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  6. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello {public stati ...

  7. java中Map遍历的四种方式

    java中Map遍历的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方 ...

  8. java读取csv文件的两种方式

    java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...

  9. Java中实现接口的三种方式您造吗?

    本文介绍了Java中实现接口的三种方式:常规实现方式.匿名内部类和 Lambda表达式实现方式.希望已经了解的同学可以重新温习一下,不了解的同学则从中受益! Java中接口最常规的实现方式 同学们都会 ...

最新文章

  1. Shiny平台构建与R包开发(三)——数据输出
  2. 概念的理解 —— 奇点(singularity point)、第一性原理(first principle)
  3. 编写yara规则 检测恶意软件
  4. linux重启memcache_memcache和memcached区别
  5. springboot 静态资源访问,和文件上传 ,以及路径问题
  6. ie6 下最佳 PNG透明方案【转】
  7. 解析5G背后的核心技术:波束成形
  8. Linux---生产者与消费者模型
  9. 学习 LLVM(11) iplist 和 ilist
  10. centOs中安装 IF.SVNadmin 及SVN过程详细
  11. (转)IDEA2017破解码(亲测可用)
  12. 斯坦福大学公开课机器学习课程(Andrew Ng)六朴素贝叶斯算法
  13. Boost Log : Trivial logging
  14. 联发科Helio X35细节曝光:采用10nm工艺
  15. R笔记:全子集回归 | 最优子集筛选变量挑选
  16. ethereumjs/ethereumjs-icap
  17. Catherine 成长记第一篇
  18. 【总结】一篇关于flask框架开发的知识点汇总手册(纯干货)
  19. IT公司都不喜欢招培训班出来的学生,那培训班的意义何在呢?
  20. 移动警务应用平台系统

热门文章

  1. 虚拟机下面没usb图标
  2. 哪个贷款软件比较好?这3款贷款App最安全最靠谱!
  3. 杭州python开发工资_杭州测试转python开发难不难?
  4. No-ip的使用(解决没有固定ip问题)
  5. js数组push对象覆盖问题?
  6. Windows系统文件被faust勒索病毒加密勒索病毒解密恢复,电脑中病毒了怎么修复?
  7. 【嵌入式】Elmo—PMAS编程标准
  8. canny算子的python实现以及pytorch实现
  9. 【仙女踩坑实录】VirtualBox设置中需要禁用硬件虚拟化才能启动虚拟机
  10. 智慧港口视频监控智能分析解决方案