是否有可能指示Java XML Transformer在可能的情况下将属性用单引号括起来[对于包含双引号的值]?
public static void main(
String[] pArgs
) throws ParserConfigurationException, TransformerException {
// initialize document
final Document doc =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
final Element element = doc.createElement("a");
element.setAttribute("b", "\"c\"");
element.setAttribute("d", "e");
element.setAttribute("f", "\"g'");
element.setAttribute("h", "'i'");
doc.appendChild(element);
// initialize transformer
final Transformer mTransformer =
TransformerFactory.newInstance().newTransformer();
mTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
mTransformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "2"
);
// write to System.out
final StringWriter writer = new StringWriter();
final StreamResult streamResult = new StreamResult(writer);
mTransformer.transform(new DOMSource(doc), streamResult);
System.out.println(writer);
}
以上代码输出:
<a b=""c"" d="e" f=""g'" h="'i'"/>
。
我想要它打印:
<a b='"c"' d="e" f=""g'" h="'i'"/>
。
实际上,我并不关心如何处理"\"g'"
个案,因为这个习惯用法不会出现在我正在处理的文件中。
答案 0 :(得分:0)
在XSLT语言中没有标准的方法,我不知道任何支持这种选项的XSLT处理器。