java中xml文件的解析方法可以说是烂大街了。最近一个项目要求解析xml文件,并将其内容转化成json字符串。(😄嘴角微微上扬,调用一个JDOM不就好了,撒撒水啦?)
然而,需求并不简单,客户要求将父节点标签中的属性以特别的方式,组装在json字符串中(见下图)
客户要求父节点标签中的属性(如id,class等),以@id,@class的形式作为键名组装在json字符串中,现有的JDOM,jackson,org.json,json-lib之类的xml解析工具包跑了个遍,最接近需求的是json-lib,然而其效果如下:
格式几乎正确,唯独是这个属性值前面的@符。既然这个结果如此接近,为什么不能重写一下json-lib的方法,纳为己用呢?(不喜欢暴力解析)
于是乎自己建包,顺着源文件debug以及修改,成功达到了客户要求的效果(json-lib的解析类还是比较简洁明了的)。
附上修改过的json-lib源码:
链接:https://pan.baidu.com/s/1qzCGBchrCitq15fLos8Bzw 密码:ge40
调用方法:
import org.json.XML;
String result = XML.toJSONObject("xml文件内容,String类型").toString();