javax Transformer保留了转义实体

时间:2011-05-26 08:31:15

标签: java xslt escaping transform transformation

在几次尝试失败后我终于放弃了xslt的转换(如果你有兴趣,可以在这里查看我的问题:don't want xslt intepret the entity characters)。现在我正在尝试解决问题的javax Transformer。

问题是我想在xml和html中保留撇号'的转义:

< cell i='0' j='0' vi='0' parity='Odd' subType='-1'> &#34;String&#39;</cell> 

输出是我不想要的:

    < td nowrap="true" class="gridCell" i="0" j="0">"String'< /td>

我希望结果如下:

    < td nowrap="true" class="gridCell" i="0" j="0">&#34;String&#39;< /td>

我不知道我们是否可以使用方法转换来执行此操作,我看到了类似的问题,但他需要相反的事情:How Do You Prevent A javax Transformer From Escaping Whitespace?

感谢您的任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

XML定义&apos;和'意思相同,因此大多数XML工具都将这种区别视为无关紧要。我想你应该质疑这个要求 - 你为什么要这样做?这有点像试图保留属性中“=”符号周围的空格:它没有意义。

答案 1 :(得分:1)

严格地说,文本节点中'&#39;&#x27&apos;之间的XML解析器没有区别,在属性中它略有不同,因为该值必须包含在"'之间;如果你在'中包含了一个属性值,你必须使用一个实体在值中指定一个撇号,而XML序列化器也会这样做。

我在Java中使用XML处理有点生疏,但我知道在C#中你可以让你的转换生成一个XML文档对象,并创建一个继承自XmlWriter类的类,通过覆盖来按顺序序列化它'WriteString'方法。希望你可以在Java中做类似的事情,可能是通过实现Result接口,或者传递一个你可以使用的DOMResult。我不记得你通常如何序列化java中的Document,但它应该是你可以操作或覆盖的东西。