Обработка двойного подчеркивания в XStream (Java) - PullRequest
7 голосов
/ 21 марта 2012

Я хотел сериализовать класс 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>

1 Ответ

7 голосов
/ 21 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...