Javax Transformer сохраняет ускользающий объект

В конце концов я отказался от преобразования xslt после неудачных попыток (если вам интересно, вы можете проверить мой вопрос здесь: не хочет, чтобы xslt интерпретировал символы сущности). И сейчас я работаю над 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>

Я не знаю, можем ли мы использовать преобразование метода для этого, и я вижу похожий вопрос, но ему нужна противоположная вещь: Как предотвратить экранирование пробелов javax Transformer?

Я ценю любую помощь от вас, спасибо!


person Jamie    schedule 26.05.2011    source источник


Ответы (2)


Строго говоря, для синтаксического анализатора XML нет разницы между ', &#39;, &#x27 или &apos; в текстовом узле. В атрибуте это немного отличается, учитывая, что значение должно быть заключено между " или '; если вы заключили значение атрибута в ', вы ДОЛЖНЫ использовать сущность для указания апострофа внутри значения, и XML-сериализатор сделает то же самое.

Я немного заржавел с обработкой XML в Java, но я знаю, что в C# вы можете сделать так, чтобы ваше преобразование генерировало объект XML-документа и создавало класс, который наследуется от класса XmlWriter, чтобы сериализовать его, как вы хотите, переопределяя 'WriteString метод. Надеюсь, вы можете сделать что-то подобное в Java, возможно, реализуя интерфейс Result или, возможно, передавая DOMResult, с которым вы можете работать. Я не могу вспомнить, как вы обычно сериализуете Document в java, но это должно быть что-то, чем вы можете манипулировать или переопределять.

person Flynn1179    schedule 26.05.2011
comment
Спасибо, я использую метод, аналогичный вашему, я меняю Writer, чтобы заменить символ сущности. Поскольку вы предложили ответ, правда, не на java, но более или менее то же самое для решения проблемы, я его принимаю. - person Jamie; 27.05.2011

XML определяет, что &apos; и ' означают одно и то же, поэтому большинство XML-инструментов будут рассматривать различие как нерелевантное. Я думаю, вы должны подвергнуть сомнению требование - почему вы пытаетесь это сделать? Это немного похоже на попытку сохранить пробелы вокруг знака "=" в атрибуте: это бессмысленно.

person Michael Kay    schedule 26.05.2011