昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的。

本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于这些服务也算比较了解,大家的配置项基本还算是保持一致,今天解析所有服务的配置项,大开眼界。

  • 不看不知道,世界真奇妙。

首先是配置项的层级结构,一般来讲,一个root作为根节点,然后子节点都是各个服务节点,在服务节点下面是服务版本节点,然后是changeunchange两个节点,然后是具体的内容。奈何人算不如天算,算来算去不如狗带。

先看图:

zk配置截图

居然所有节点都是zknode,这是其一,在每个版本下面还有不同的配置模块,然后子节点配置具体信息。

zk配置截图

居然还有没有value的配置项,我真实要狗带了。

然后就是MySQL配置,简直刷新世界观。

下面是我从XML总的配置文件截取的内容:

                <zknode name="datadb.username" value="****"/>                <zknode name="db.host.r" value="****"/>                <zknode name="dbdata.host.w" value="*"/>                <zknode name="datadb.port" value="*"/>                <zknode name="datadb.databasev3" value="*****"/>                <zknode name="datadb.host.w" value="*****"/>
               <zknode name="v3.db" value="******"/>                <zknode name="v3.user" value="******"/>                <zknode name="work.db" value="******"/>                <zknode name="work.host" value="******"/>                <zknode name="v3.passwd" value="******"/>
                <zknode name="DB_CONNECTION" value="******"/>                <zknode name="DB_HOST" value="******"/>                <zknode name="DB_DATABASE" value="******"/>                <zknode name="DB_PASSWORD" value="******"/>
                <zknode name="mysql.DB_DATABASE" value="***"/>                <zknode name="redis.REDIS_PORT" value="***"/>
                <zknode name="ds.druid.username" value="****"/>                <zknode name="ds.druid.url"  value="****"/>

此处省略100种数据库配置

痛定思痛,该吐槽已经吐槽完了,活儿还是得干完的。经过不断尝试,终于完成了一种解决的脚本。

我觉得需要一个宽屏显示器了。

package com.fun.ztest.groovy

import com.fun.frame.httpclient.FanLibraryimport com.fun.utils.XMLUtilimport org.slf4j.Loggerimport org.slf4j.LoggerFactory

class Td extends FanLibrary {

    private static Logger logger = LoggerFactory.getLogger(Td.class)

    public static void main(String[] args) {

        def xml = XMLUtil.parseXml("/Users/fv/Downloads/d.xml", "root")        xml.get(0).getChildren().each {            logger.error("服务名:{}", it.getAttrs().get(0).getValue())            def children = it.getChildren()            children.each {                def attr1 = it.getAttrs()                def name = attr1.get(0).getValue()                if (name ==~ /[vV]\d.\d+/) {                    logger.error("zk版本:${name}")                    def children1 = it.getChildren()                    children1.each {                        def children2 = it.getChildren()                        children2.each {                            def attrs = it.getAttrs()                            if (attrs.size() > 1) {                                def var = attrs.get(0).getValue()                                def value = attrs.get(1).getValue()                                if (!(value ==~ /\d+/)) {                                    if (var.contains("druid") || var.contains("db") || var.contains("user") || value.contains("mysql") || value.contains("neworiental") || value.contains("neworiental")) {                                        if (!value.contains("{") && !value.contains(".txt") && !var.contains("service") && !var.contains("maill") && !var.contains("host") && !var.contains("driver") && !var.contains("filters") && !var.contains("center") && !var.contains("rabbit") && !var.contains("order") && !value.contains("http"))                                            logger.info("key: {},value: {}", var, value)                                    }                                }                            }                        }                    }                }            }        }

        testOver()    }

}


公众号FunTester首发,原创分享爱好者,腾讯云和掘金社区首页推荐,知乎七级原创作者,欢迎关注、交流,禁止第三方擅自转载。

FunTester热文精选

  • 写给所有人的编程思维
  • 2020年Tester自我提升
  • 未来的神器fiddler Everywhere
  • 测试开发工程师工作技巧
  • Selenium4 IDE,它终于来了
  • 自动化测试灵魂三问:是什么、为什么和做什么
  • 为什么测试覆盖率如此重要
  • 吐个槽,非测误入。
  • 自动化测试框架
  • 敏捷中的端到端测试

load xml error什么意思_XML文件解析实践(DOM解析)相关推荐

  1. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  2. XML解析之DOM解析详解

    一.概念 xml文件多用于信息的描述,所以在得到一个xml文档之后按照xml中的元素取出对应的信息就是xml的解析.Xml解析有两种方式,一种是DOM解析,另一种是SAX解析,两种操作的方式如图. 二 ...

  3. XML的SAX解析以及DOM解析和SAX解析区别

    前言: XML解析工具 DOM解析原理:1)JAXP (oracle-Sun公司官方)2)JDOM工具(非官方)3)Dom4J工具(非官方)三大框架(默认读取xml的工具就是Dom4j)....... ...

  4. Android程序解析xml至文档中,Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 李明 30 李向梅 25 二.在service中写一个DOM解析的操作 ...

  5. XML解析之DOM解析

    目录 1 xml文件 2 DOM解析代码实现 2.1 DOM解析步骤 2.2 DOM解析代码实现 2.3 DOM解析代码运行结果 1 xml文件 <?xml version="1.0& ...

  6. XML解析,dom解析,Jdom解析

    XML是一门标记语言,主要作用是用来进行数据传输和配置保存的.XML文件内容主要由两部分组成:头信息,主体信息 头信息:       主要放入的是一些配置信息,例如:版本,编码,规则(dtd,xsd) ...

  7. XML文件解析之--DOM与SAX

    xml文件又称'可扩展性标记语言',可以对文档和数据进行结构化处理,从而能够在部门.客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发. 我们在进行web开发的时候离不开xml文件,xml ...

  8. xml文件解析 (DOM4J解析XML) -java

    文章目录 前言 一.本地XML解析 1.导包并配置 1.在项目下新建lib文件夹,并把jar包导入. 2.更改项目配置 2.编写一个简单的本地XML文件 3.解析本地XML文件: 二.解析网络上的XM ...

  9. mysql load xml_MySQL的SQL语句 - 数据操作语句(10)- LOAD XML 语句

    LOAD XML 语句 1. LOAD XML 2. [LOW_PRIORITY | CONCURRENT] [LOCAL] 3. INFILE 'file_name' 4. [REPLACE | I ...

最新文章

  1. 番茄工作法:番茄时间管理方法与番茄工作法软件图解提高工作效率
  2. 【C 语言】二级指针作为输入 ( 指针数组 | 复杂指针解读 )
  3. 【机器学习算法专题(蓄力计划)】十七、机器学习中决策树算法
  4. php怎么改,php怎么修改图片
  5. android xpath解析xml,Android 中处理 XML 的四种方式-DOM
  6. ActionScript 3 step by step (2) - 使用Trace()跟踪输出
  7. 1059. C语言竞赛(20)-PAT乙级真题
  8. eclipse jar打包详解
  9. VisualStudio2022如何改为中文语言(vs2022汉化)
  10. 怎么用便签在手机上记事?
  11. 域名证书是什么样子的_什么是网站域名证书
  12. 新元宇宙奇科幻小说每周连载《地球人奇游天球记》第十回月亮之宴
  13. Ubuntu下键盘测试软件
  14. 硬件设计分享-⑧天线设计
  15. C语言——计算某日是该年的第几天
  16. netdev_features_t和ip_summed说明
  17. 【算法竞赛学习笔记】快速傅里叶变换FFT-数学提高计划
  18. 关于电容器的泄漏电流
  19. 剑侠情缘服务器显示维护,剑侠情缘手游8月22日部分服务器数据回档停服维护
  20. linux最少需要几个分区,安装linux至少需要哪两个分区?作用分别是什么?

热门文章

  1. Python规范:提高可读性
  2. android频道编辑实现_短说频道功能详解—构建你社区的小门户
  3. 路由(route)是什么意思?
  4. 网页HTTP协议 get和post请求区别?(HTTP中Get、Post、Put与Delete的区别)
  5. RGB565与RGB555位图文件格式的标志识别
  6. python数据分析是什么意思_python数据分析有什么用
  7. java接口构建英雄属性_Java开发学习心得(三):项目结构
  8. wmic 获取运行内存大小
  9. 地大计算机学院教授,张静(地大教授)
  10. 电容电阻贴片封装尺寸