如何忽略StringBuffer中的双引号

时间:2018-08-16 07:47:16

标签: java xml

我正在使用StringBuffer动态附加字符串,使用\忽略单双(“) 但是适当的结果尚未到来。请帮助

现在

       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
        <tv time=\"10\" name=\"Main Gate\" id=\"9410\" device=\"smartTV\"> 
           <playlist name=\"Welcome\" id=\"56\">
           </playlist>
        </tv>"

预期

       "<?xml version="1.0" encoding="UTF-8"?>
        <tv time="10" name="Main Gate" id="9410" device="smartTV"> 
           <playlist name="Welcome" id="56">
           </playlist>
        </tv>"

下面是Java代码

     StringBuffer stringBuffer = new StringBuffer("<?xml version=\"1.0\" 
                                               encoding=\"UTF-8\"?>");
      stringBuffer.append("<tv time=\"10\" device-name=\""+ 
                   device.getName() +"\" "
            + "device-id=\""+device.getDeviceHardId()+"\" 
                   device=\""+device.getDeviceType()+"\">");

    Playlist playlist = device.getPlaylist();
    if(playlist !=  null){

        stringBuffer.append("<playlist name=\""+playlist.getName()+"\" 
                 id=\""+playlist.getId() +"\">");
        stringBuffer.append("</playlist>");
    }

    stringBuffer.append("</tv>");

2 个答案:

答案 0 :(得分:0)

您的代码按预期工作,转义字符串是在xml中获取实际引号的方式,唯一的问题是您使用哪种编译器来解析字符串,Java按预期使用转义符,但如果使用其他类型的编辑器可以用不同的方式处理它

答案 1 :(得分:-1)

这不是一个好习惯。为什么不使用String Object提供的replace()方法,而不是到处都使用双引号。将双引号替换为唯一的标识符,例如“'”。最后用双引号替换“”。下面的代码段将演示

    StringBuffer str = new StringBuffer();
    str.append("<?xml version=&quot1.0&quot encoding=&quotUTF-8&quot?><tv time=&quot10&quot name=&quot"+ device.getName() + "&quot id=&quot" + device.getDeviceHardId() + "&quot device=&quot"+ device.getDeviceType() + "&quot>");
    Playlist playlist2 = device.getPlaylist();
    if (playlist2 != null) {
        str.append("<playlist name=&quot" + playlist2.getName() + "&quot id=&quot" + playlist2.getId()+"&quot></playlist></tv>");
    }
    System.out.println(str.toString().replace("&quot", "\"")); //Will print the desired XML

不过,如果您需要实现,下面的代码应该可以工作。

     StringBuffer stringBuffer = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
     stringBuffer.append("<tv time=\"10\" name=\"" + device.getName() + "\" " + "id=\"" + device.getDeviceHardId() + "\" device=\"" + device.getDeviceType() + "\">");
     Playlist playlist1 = device.getPlaylist();
     if (playlist1 != null) {
         stringBuffer.append("<playlist name=\"" + playlist1.getName() + "\" id=\"" + playlist1.getId() + "\">");
         stringBuffer.append("</playlist>");
     }
     stringBuffer.append("</tv>");

编辑:这不是解决方案,而是一种解决方法。 &qout是一个示例。可以是任何唯一的字符串集