JAXB似乎正在重新编码新的行char
我有以下代码……
public static final String NEWLINE = String.format("%n"); ... StringBuilder b = new StringBuilder(); ... b.append(NEWLINE); return b.toString();
然而,当我在SOAPUI中运行它并查看RAW时,看起来它再次扩充它并且新行转为
而不是
1,name,value 2,name,value
它显示为……
1,name,value
2,name,value
因此,当我使用正则表达式查询解析替换为空字符串时,全文仍然存在
现在我对编码并不熟悉,但这是SOAP消息的有效负载。 信封被剥离,并将其保存为CSV文件。 当我在Notepad ++中打开CSV时,新的行字符似乎可以工作,但该编码值仍然存在。 有谁知道我错过了什么?
我尝试添加一个(sb = Stringbuilder)
sb.append("");
但这似乎不起作用,再次JAXB似乎逃脱了角色。
<![CDATA[000000,LK20130930120048,Compant,Data,20130930120048,,
000001,user,Fname,Mname,Lname,12345 Address 1,Address 2222,setAddress3,setCity,OH,US,44332,,N,N,E,,,,?,,
999999]]>
我也可以这样做,但我使用JAX-WS的默认marshaller。 所以我不确定在哪里放。
JAXB(JSR-222)实现将执行以下操作:
-
\n
将作为新行写入XML。 -
\r
将被转义为
演示代码
富
import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Foo { public String slashN; public String slashR; public String slashRslashN; }
演示
import javax.xml.bind.*; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Foo.class); Foo foo = new Foo(); foo.slashN = "Hello\nWorld"; foo.slashR = "Hello\rWorld"; foo.slashRslashN = "Hello\r\nWorld"; Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(foo, System.out); } }
产量
Hello World Hello
World Hello
World
尝试将特殊字符包装在块中。 它应该避免重新编码。