Circumvent XML双引号使用单引号转义

时间:2014-03-21 14:53:23

标签: java xml formatting escaping

是否有可能指示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="&quot;c&quot;" d="e" f="&quot;g'" h="'i'"/>

我想要它打印:

<a b='"c"' d="e" f="&quot;g'" h="'i'"/>

实际上,我并不关心如何处理"\"g'"个案,因为这个习惯用法不会出现在我正在处理的文件中。

1 个答案:

答案 0 :(得分:0)

在XSLT语言中没有标准的方法,我不知道任何支持这种选项的XSLT处理器。