load xml error什么意思_XML文件解析实践(DOM解析)
生活随笔
收集整理的這篇文章主要介紹了
load xml error什么意思_XML文件解析实践(DOM解析)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天完成了基于DOM的XML文件解析類,今天趕緊實踐了一下,不得不說,實踐中的坑還是很多的。
本來這個項目就是為了規范各個服務在使用MySQL數據庫時候的配置項,由于之前我接觸的都是Java服務,對于這些服務也算比較了解,大家的配置項基本還算是保持一致,今天解析所有服務的配置項,大開眼界。
- 不看不知道,世界真奇妙。
首先是配置項的層級結構,一般來講,一個root作為根節點,然后子節點都是各個服務節點,在服務節點下面是服務版本節點,然后是change和unchange兩個節點,然后是具體的內容。奈何人算不如天算,算來算去不如狗帶。
先看圖:
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.FanLibrary
import?com.fun.utils.XMLUtil
import?org.slf4j.Logger
import?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解析)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: es like模糊匹配_es 基于mat
- 下一篇: mysql分组取出每组地一条数据_MyS