【问题标题】:javax Transformer preserve the escaping entityjavax Transformer 保留转义实体
【发布时间】:2011-05-26 22:29:46
【问题描述】:

在几次尝试失败后,我终于放弃了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>

我不知道我们是否可以使用方法 transform 来做到这一点,我看到了一个类似的问题,但他需要相反的东西:How Do You Prevent A javax Transformer From Escaping Whitespace?

感谢您的帮助,谢谢!

【问题讨论】:

    标签: java xslt escaping transform transformation


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我用的方法和你的差不多,我换了Writer来替换实体字符。正如您提供的答案,虽然不是在 java 中,但或多或​​少是相同的东西来解决问题,我接受它。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      相关资源
      最近更新 更多