xml vs json 为什么还有很多项目在用 xml 做配置文件或者传输文本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zhichaozhang
V2EX    程序员

xml vs json 为什么还有很多项目在用 xml 做配置文件或者传输文本

  •  1
     
  •   zhichaozhang
    threadshare 2019-01-22 16:11:46 +08:00 6076 次点击
    这是一个创建于 2455 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我个人感觉 json 会更好用一些, 但是看一些系统发现还是有很多地方在用 xml,比如说微信支付 一些框架的配置结构等等。我在知乎上看了一些 但是好像并没有给出 xml 的明显的优点,而作为阅读而言,我个人觉得 json 反而更容易理解,有知道这个的历史原因或者确实有些地方就应该使用 xml 来做。

    19 条回复    2020-09-02 22:02:02 +08:00
    CDuXZMAPgHp1q9ew
        1
    CDuXZMAPgHp1q9ew  
       2019-01-22 16:21:54 +08:00
    还可能有个原因, xml 支持 xsd 元数据定义. 写错了 idea 会提示
    zhichaozhang
        2
    zhichaozhang  
    OP
       2019-01-22 16:26:42 +08:00
    @wujichao 嗯嗯 可能有这个原因 因为要校验配置格式定义的一致性问题
    zjsxwc
        3
    zjsxwc  
       2019-01-22 16:29:13 +08:00
    虽然看起来 json 刚开始会少写一些代码,

    但 xml 可以更少的代码包含更多的元数据,json 却写更多。。
    reus
        4
    reus  
       2019-01-22 16:29:44 +08:00
    xml 手写麻烦,但 json 也不见得好
    例如注释都不支持
    shyangs
        5
    shyangs  
       2019-01-22 16:31:44 +08:00
    google XML Hell

    Java 的配置文件不是 properties 就是 XML, 已经有历史惯性了.
    JSON, YAML, TOML 都是后起的.
    zhichaozhang
        6
    zhichaozhang  
    OP
       2019-01-22 16:39:49 +08:00
    @shyangs 是有一定的历史原因 但是像微信支付这种传输文本竟然也用的是 xml。。。
    zhichaozhang
        7
    zhichaozhang  
    OP
       2019-01-22 16:42:54 +08:00
    @reus 注释这个可以算一个原因
    ferock
        8
    ferock  
    PRO
       2019-01-22 16:43:12 +08:00
    @zhichaozhang 说明对接系统里有 java 的影子
    zhichaozhang
        9
    zhichaozhang  
    OP
       2019-01-22 16:43:48 +08:00
    @zjsxwc 这个怎么理解? 在 json 中以对象的形式定义感觉一样啊 可能是我没理解到位
    quinoa42
        10
    quinoa42  
       2019-01-22 16:44:36 +08:00
    Rust 大家都用 toml,舒服多了
    zjsxwc
        11
    zjsxwc  
       2019-01-22 16:46:35 +08:00
    @zhichaozhang

    json 可以继承别的 json 格式吗,xml 可以

    json 可以改变、修复当前已有数据格式的定义吗,xml 可以
    zhichaozhang
        12
    zhichaozhang  
    OP
       2019-01-22 16:46:41 +08:00
    @quinoa42 yaml json 都还好
    yinzhili
        13
    yinzhili  
       2019-01-22 16:50:36 +08:00
    xml 可以写注释
    json 咋办?
    xfriday
        14
    xfriday  
       2019-01-22 16:59:38 +08:00
    配置用 yaml (可以注释且易于阅读)
    数据用 json 或 protobuf
    abcbuzhiming
        15
    abcbuzhiming  
       2019-01-22 17:08:42 +08:00
    xml 拥有元数据定义能力,这个能力 json 是不具备的,所以某些特殊场合,必须上 xml,没办法

    @xfriday 真心不喜欢吹 yaml,yaml 这个东西,哪里好阅读了?人类视觉上下扫描的速度远不如左右左右的特点,决定 yaml 这种上下式树状层级组织配置文件注定没有 properties 文件好阅读
    Sparetire
        16
    Sparetire  
       2019-01-22 17:11:20 +08:00 via Android
    toml+1
    yaml 三十行以内还行
    sadhen
        17
    sadhen  
       2019-01-23 00:14:50 +08:00
    xml 其实是很优秀的
    Alfons
        18
    Alfons  
       2019-01-23 09:57:15 +08:00
    ini 也很不错啊
    Cbdy
        19
    Cbdy  
       2020-09-02 22:02:02 +08:00 via Android
    @wujichao 现在 JSON 也有 JSON Schema 支持了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5435 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 01:23 PVG 09:23 LAX 18:23 JFK 21:23
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86