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>

Не знам дали бихме могли да използваме метода transform, за да направим това, и виждам подобен въпрос, но той се нуждае от обратното нещо: Как да попречите на javax трансформатор да избяга от празно пространство?

Оценявам всяка ваша помощ, благодаря!


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