Обработка двойного подчеркивания XStream (Java)

Я хотел сериализовать класс Java в XML с помощью XStream.

Мне нужно было сгенерировать элемент XML с одним подчеркиванием (canal_operateur), но XStream добавляет второе подчеркивание в имя элемента xml.

Как оставить только одно подчеркивание?

С конфигурацией по умолчанию для этого класса:

public class Document implements Serializable {
    private String typedoc;
    private Fichier fichier;
    private String canalOperateur;  
    //xstream.aliasField("canal_operateur", Document.class, "canalOperateur");
    /*
    ** setter and getter
    */
}

XStream удваивает подчеркивание:

<document>
    <canal__operateur>canal</canal__operateur>
    <commentaire>commentaire</commentaire>
    <metadonnees/>
</document>

person codeisee    schedule 21.03.2012    source источник


Ответы (1)


Согласно здесь:

XStream сопоставляет имена классов Java и имена полей с тегами или атрибутами XML. К сожалению, это сопоставление не может быть 1:1, поскольку некоторые символы, используемые для идентификаторов в Java, недопустимы в именах XML. Поэтому XStream использует XmlFriendlyNameCoder для замены этих символов заменой. По умолчанию этот NameCoder использует символ подчеркивания в качестве escape-символа и, следовательно, должен также экранировать сам символ подчеркивания. Вы можете предоставить другой сконфигурированный экземпляр XmlFriendlyNameCoder или совершенно другую реализацию, такую ​​как NoNameCoder, чтобы вообще предотвратить кодирование имени. Однако в этом случае вы должны убедиться, что полученные имена допустимы для XML.

person npinti    schedule 21.03.2012