IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java解析xml -> 正文阅读

[大数据]Java解析xml

1. 什么是xml ?

xml快速入门

2. 导入依赖

本方案中使用DOM4J + xpath 解析xml文件

<!-- dom4j解析xml -->
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.3</version>
        </dependency>
<!-- xpath的依赖 -->
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.2.0</version>
        </dependency>

3. 案例文件

<?xml version="1.0" encoding="UTF-8"?>

<map-reduce>
  <jobName type="MR">测试MR参数使用</jobName>
  <jobPath>/opt/soft/cdp_job_jar/测试MR参数使用_20220505112618.jar</jobPath>
  <configuration/>
  <job>
    <setMapperClass>xx.xxx.xxxxxx.mr.TestMR</setMapperClass>
    <setOutputFormatClass>org.apache.hadoop.mapreduce.lib.output.TextOutputFormat</setOutputFormatClass>
    <setMapOutputValueClass>org.apache.hadoop.io.LongWritable</setMapOutputValueClass>
    <setMapOutputKeyClass>org.apache.hadoop.io.Text</setMapOutputKeyClass>
    <setInputFormatClass>org.apache.hadoop.mapreduce.lib.input.TextInputFormat</setInputFormatClass>
  </job>
  <input>/user/hdfs/rawdata/gn-20220411.log</input>
  <output>/user/hdfs/rawdata/test-mr-1</output>
</map-reduce>

4. 案例代码

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.List;

/**
 * 解析xml的四种方式
 * 1. DOM(Document Object Model)  (JDK已经自带jar包,不需要额外导入!)
 * 2. Sax(Simple API for XML)  (JDK已经自带jar包,不需要额外导入!)
 * 3. DOM4J 解析 (需要导入依赖包) 推荐使用
 * 4. JDOM(Java-based Document Object Model)
 *
 * xpath
 * XPath 是一门在 XML 文档中查找信息的语言。
 * 使用路径表达式来选取 XML 文档中的节点或者节点集。
 * 这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
 *
 * 路径表达式
 * //节点名 选取指定节点 一般使用  selectSingleNode
 * /节点名/*  选取指定节点下面的所有子节点  一般使用selectNodes
 *
 */
public class 解析xml {
    // 使用DOM4J 结合 xpath 解析xml文件
    public static void main(String[] args) throws DocumentException {
        // 1. 创建SAXReader 用于读取加载xml文件
        SAXReader saxReader = new SAXReader();
        // 2. saxReader 读取xml文件
        Document document = saxReader.read(new File(解析xml.class.getClassLoader().getResource("testxml.xml").getPath()));

        // 3. 使用xpath获取值
        // 获取任务名  selectSingleNode 选取单个节点
        // 通配符 //节点名
        // 返回的是一个Node , 获取其中内容使用 getText方法
        Node jobNameNode = document.selectSingleNode("//jobName");
        String jobName = jobNameNode.getText();
        System.out.println("任务名称 : " + jobName);

        // 选取属性在节点对象上 使用 @属性名获取属性值
        String type = jobNameNode.selectSingleNode("@type").getText();
        System.out.println("任务类型 : " + type);

        // 获取jar包路径
        String jobPath = document.selectSingleNode("//jobPath").getText();
        System.out.println("任务jar包位置: " + jobPath);

        // 获取job的配置, selectNodes 获取多个节点信息, 是指选取指定节点下的子节点的内容
        List<Node> jobnodes = document.selectNodes("//job/*");
        for (Node jobnode : jobnodes) {
            System.out.println(jobnode.getText());
        }

        // 获取输入参数路径
        String input = document.selectSingleNode("//input").getText();
        System.out.println("输入文件路径 : " + input );

        // 获取输出参数路径
        String output = document.selectSingleNode("//output").getText();
        System.out.println("输出文件路径 : " + output);

    }
}

5. 解析结果

任务名称 : 测试MR参数使用
任务类型 : MR
任务jar包位置: /opt/soft/cdp_job_jar/测试MR参数使用_20220505112618.jar
xx.xxx.xxxxxx.mr.TestMR
org.apache.hadoop.mapreduce.lib.output.TextOutputFormat
org.apache.hadoop.io.LongWritable
org.apache.hadoop.io.Text
org.apache.hadoop.mapreduce.lib.input.TextInputFormat
输入文件路径 : /user/hdfs/rawdata/gn-20220411.log
输出文件路径 : /user/hdfs/rawdata/test-mr-1

欢迎大家留言一起讨论学习!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:58:25  更:2022-05-10 12:00:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:49:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码