美文网首页我爱编程技术干货程序员
XML格式单引号和双引号拼接问题

XML格式单引号和双引号拼接问题

作者: 我和程序猿的日常 | 来源:发表于2017-04-26 15:54 被阅读0次

    前言:在开发的时候遇到一个问题,一个xml格式的请求数据其中一个字段拼接的是json格式的数据,json数据里面的双引号导致xml格式错误,导致服务端解析错误。

    错误请求代码

    <Request T="101" T1="1" C="0" Version="8.1.20160817001" UserName="yzc" PassWord="1" Type="0" MobileType="HUAWEI VNS-AL00" Imei="862268034454116" AndroidVersion="6.0" SIMCardInfo="{"netWorkType":"0","phoneType":"1","dataState":"0","simState":"1","subScriberId":"null"}" SDCardSize="10.4GB" SDCardAvailSize="3.1GB" />
    

    有经验的人看到这个请求应该就会发现错误的地方

    SIMCardInfo="{"netWorkType":"0","phoneType":"1","dataState":"0","simState":"1","subScriberId":"null"}"

    字段内部的双引号会引起xml解析错误,正常情况下xml根据双引号的位置只能解析SIMCardInfo="{",导致后面的数据没有正确的双引号标识解析错误

    我们既要保证json内部数据正确,还要保证整个xml请求数据正确,所以特殊情况就要特殊对待

    解决方法

    1、如果内容中有单引号,就用双引号括起来,如果内容中有双引号,就用单引号括起来。

    <example content1="内容有单引号'用双引号括起来" content2='内容有双引号"用单引号括起来' />
    

    所以按照这种方法,上述请求可以转换为这样

    <Request T="101" T1="1" C="0" Version="8.1.20160817001" UserName="yzc" PassWord="1" Type="0" MobileType="HUAWEI VNS-AL00" Imei="862268034454116" AndroidVersion="6.0" SIMCardInfo='{"netWorkType":"0","phoneType":"1","dataState":"0","simState":"1","subScriberId":"null"}' SDCardSize="10.4GB" SDCardAvailSize="3.1GB" />
    

    2、使用转义字符替换

    <Request T="101" T1="1" C="0" Version="8.1.20160817001" UserName="yzc" PassWord="1" Type="0" MobileType="HUAWEI VNS-AL00" Imei="862268034454116" AndroidVersion="6.0" SIMCardInfo="{"netWorkType":"0","phoneType":"1","dataState":"0","simState":"1","subScriberId":"null","networkCountryIso":""}" SDCardSize="10.4GB" SDCardAvailSize="3.1GB"/>
    

    我们在代码编写的时候,经常需要拼接带有双引号字符串,我们也可以使用“\”转义

    "{\"simOperator\":\"" + simOperator + "\",\"netWorkType\":\"" + netWorkType + "\",\"phoneType\":\"" + phoneType + "\",\"dataState\":\"" + dataState + "\",\"simState\":\"" + simState+ "\",\"subScriberId\":\"" + subScriberId + "\",\"networkCountryIso\":\"" + networkCountryIso + "\"}"

    相关文章

      网友评论

        本文标题:XML格式单引号和双引号拼接问题

        本文链接:https://www.haomeiwen.com/subject/ofnizttx.html