我有一个第三方Web服务,它只能解析XML请求,其中属性中的撇号被编码为'
。它拒绝像'
这样的原始撇号。这个网络服务并不关心您的论点,即XML标准允许在由双引号分隔的属性值中使用撇号。它想要'
。
我想使用标准的Java XML转换器为这些请求生成XML。它不会将'
编码为'
。我该怎么做呢?
示例程序:
class test {
public static void main(String args[]) throws Exception {
final org.w3c.dom.Document doc = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
final org.w3c.dom.Element tag = doc.createElement("fedora");
tag.setAttribute("tip", "m'lady");
doc.appendChild(tag);
doc.setXmlStandalone(true);
final javax.xml.transform.Transformer t = javax.xml.transform.TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(javax.xml.transform.OutputKeys.VERSION, "1.0");
t.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "UTF-8");
t.setOutputProperty(javax.xml.transform.OutputKeys.STANDALONE, "yes");
t.transform(new javax.xml.transform.dom.DOMSource(doc),
new javax.xml.transform.stream.StreamResult(new java.io.PrintWriter(System.out)));
}
}
它发出的内容:<?xml version="1.0" encoding="UTF-8" standalone="no"?><fedora tip="m'lady"/>
我希望它发出什么:<?xml version="1.0" encoding="UTF-8" standalone="no"?><fedora tip="m'lady"/>
答案 0 :(得分:0)
在XSLT 2.0+中,您可以使用character maps:
<xsl:character-map name="aposCharMap">
<xsl:output-character character="'" string="&apos;"/>
</xsl:character-map>
这将在序列化期间用'
替换'
。