我正在使用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>");
答案 0 :(得分:0)
您的代码按预期工作,转义字符串是在xml中获取实际引号的方式,唯一的问题是您使用哪种编译器来解析字符串,Java按预期使用转义符,但如果使用其他类型的编辑器可以用不同的方式处理它
答案 1 :(得分:-1)
这不是一个好习惯。为什么不使用String Object提供的replace()
方法,而不是到处都使用双引号。将双引号替换为唯一的标识符,例如“'”。最后用双引号替换“”。下面的代码段将演示
StringBuffer str = new StringBuffer();
str.append("<?xml version="1.0" encoding="UTF-8"?><tv time="10" name=""+ device.getName() + "" id="" + device.getDeviceHardId() + "" device=""+ device.getDeviceType() + "">");
Playlist playlist2 = device.getPlaylist();
if (playlist2 != null) {
str.append("<playlist name="" + playlist2.getName() + "" id="" + playlist2.getId()+""></playlist></tv>");
}
System.out.println(str.toString().replace(""", "\"")); //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是一个示例。可以是任何唯一的字符串集