par*_*yle 4 java xml axis2 utf-8
我有一个需要生成xml的服务.目前我使用jaxb和Marshaller使用StringWriter创建xml.
这是我得到的当前输出.
<CompanyName>Bakery é &</CompanyName>
Run Code Online (Sandbox Code Playgroud)
虽然这可能适用于某些Web服务,但我需要转义特殊的unicode字符.令我的xml的服务需要有这样的服务:
<CompanyName>Bakery é &</CompanyName>
Run Code Online (Sandbox Code Playgroud)
如果我使用StringEscapeUtils,commons-lang我最终会得到像下面这样的东西.这个也不起作用:
<CompanyName>Bakery &#233; &amp;</CompanyName>
Run Code Online (Sandbox Code Playgroud)
是否有一些Marshaller设置允许我将这些特殊字符编码为十进制值?
正如Ed Staub建议的那样,尝试设置jaxb.encoding属性.该US-ASCII编码将导致任何的前128个码点以上进行转义.
@XmlRootElement(name = "Company")
public class Company {
private String companyName = "Bakery \u00E9 &";
@XmlElement(name = "CompanyName")
public String getCompanyName() { return companyName; }
public void setCompanyName(String bar) { this.companyName = bar; }
public static void main(String[] args) throws Exception {
JAXBContext ctxt = JAXBContext.newInstance(Company.class);
Marshaller m = ctxt.createMarshaller();
m.setProperty("jaxb.encoding", "US-ASCII");
m.marshal(new Company(), System.out);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16643 次 |
| 最近记录: |