JAXB Marshal setProperty com.sun.xml.bind.CharacterEscapeHandlerJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 JAXB Marshal setProperty com.sun.xml.bind.CharacterEscapeHandler

Сообщение Anonymous »

Я пытаюсь переопределить экранирование специальных символов в кодировке JAXB.
Для этого я использую интерфейс, реализующий CharacterEscapeHandler.

Вот интерфейс:

Код: Выделить всё

package project1;
import com.sun.xml.bind.marshaller.CharacterEscapeHandler;
import java.io.IOException;
import java.io.Writer;
public class MinimumEsc implements CharacterEscapeHandler {
private MinimumEsc( ) {

System.out.println("Function called");

}  // no instanciation please

public static final CharacterEscapeHandler theInstance = new MinimumEsc();

public void escape(char[] ch, int start, int length, boolean isAttVal, Writer out) throws IOException {
// avoid calling the Writerwrite method too much by assuming
// that the escaping occurs rarely.
// profiling revealed that this is faster than the naive code.

System.out.println("Function called");
int limit = start+length;
for (int i = start; i < limit; i++) {
char c = ch[i];
if( c=='&' || c=='' || (c=='\"' && isAttVal) ) {
if(i!=start)
out.write(ch,start,i-start);
start = i+1;
switch (ch[i]) {
case '&' :
out.write("&amp2;");
break;
case '' :
out.write("&gt2;");
break;
case '\"' :
out.write("&quot2;");
break;
}
}
}

if( start!=limit )
out.write(ch,start,limit-start);
}
}
Из моего основного класса я пытаюсь вызвать метод маршала:

Код: Выделить всё

public static void main(String[] args){
System.out.println("hello world");

try{
//generate the java object
Shiporder so = new Shiporder();
so.setOrderid("123456");
so.setOrderperson("Elio  < > ' \"  e   \" Khattar");

//generate the file
File f = new File("C:\\tst_encode.xml");
if(!f.exists()){
f.createNewFile();
}

JAXBContext context = JAXBContext.newInstance("xsdobjects");
Marshaller jaxbMarshaller = context.createMarshaller();
//  Marshaller jaxbMarshaller=  new JAXBContext().newMarshaller();

System.out.println(CharacterEscapeHandler.class.getName());
CharacterEscapeHandler escapeHandler =  MinimumEsc.theInstance;
jaxbMarshaller.setProperty("com.sun.xml.bind.characterEscapeHandler",escapeHandler);

jaxbMarshaller.marshal(so, f);
}catch(JAXBException e){
e.getCause();
e.getErrorCode();
e.printStackTrace();

}catch(IOException ioe){
ioe.printStackTrace();
}
}
При запуске я получаю это сообщение об ошибке:

Код: Выделить всё

javax.xml.bind.PropertyException: name: com.sun.xml.bind.characterEscapeHandler value: project1.MinimumEsc@100bac2
at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:520)
at project1.Class1.main(Class1.java:56)
Кто-нибудь может мне помочь? Я провел последние 5 часов в поисках этого решения в Интернете и попробовал множество решений. Любая помощь высоко ценится. Спасибо

Подробнее здесь: https://stackoverflow.com/questions/166 ... apehandler
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • JAXB Marshal setProperty com.sun.xml.bind.CharacterEscapeHandler
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Jaxb Marshal SetProperty com.sun.xml.bind.characterescapehandler
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Jaxb Marshal SetProperty com.sun.xml.bind.characterescapehandler
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Javax to jakarta Migration: Glassfish Jaxb 4.x читает jakarta.xml.bind.nantations*, но не javax.xml.bind.annotation.*
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Пакет в обоих модуле org.glassfish.jaxb.runtime и модуль com.sun.xml.bind
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»