Соответственно встал вопрос о переносе контактов на новый сервер. Чем это можно сделать? Конечно же Jabber Roster Utility, чем же еще? Но! JRE сначала должен получить контакты со старого, а сервер-то лежит. Ростер, конечно же, скеширован клиентом, коим у меня является Psi. Но формат-то там неподходящий! Если перебивать ручками, то проще покажется добавить ручками же контакты прямо в клиенте. Не вариант.
Сначала в голову полезла шальная мысль написать парсер, но она была сразу отброшена. Psi хранит настройки в XML, a значит можно поступить проще.
Возьмем нужный нам файл настроек: %psidatadir%/profiles/%profilename%/accounts.xml и применим к нему xslt-стиль. Стиль этот очень прост:
<?xml version=”1.0″ encoding=”UTF-8″?>
Account
+,,,none,
В результате мы получим ростеры всех прописанных туда аккаунтов в формате, который хавает JRE
Account jid@domain.tld
+,elem1@dom1.tld,Element 1,none,Group
+,elem2@dom2.tld,Element 2,none,Group
+,elem3@dom3.tld,Element 3,none,Group 2
Account jid2@domain2.tld
+,elem1@dom1.tld,Element 1,none,
+,elem4@dom4.tld,Element 2,none,
+,elem1@dom1.tld,Element 1,none,Group
+,elem2@dom2.tld,Element 2,none,Group
+,elem3@dom3.tld,Element 3,none,Group 2
Account jid2@domain2.tld
+,elem1@dom1.tld,Element 1,none,
+,elem4@dom4.tld,Element 2,none,
Вуаля, кормим JRE.
Как применить стиль?
Самый простой способ — браузер. Открываем accounts.xml (рекомендую сделать копию и издеваться над ней, а не резать по живому), вписываем первой строкой
<?xml-stylesheet type="text/xsl" href="accounts-xslt.xml"?>
копируем стиль в папку с этим accounts.xml и открываем accounts.xml в браузере.
Если не сработает, удаляем из accounts.xml строку <!DOCTYPE accounts> и элемент xmlns="psi-im.org/options"
Знаю, что не по фэн-шую, но мне почему-то помогло.
Скачать стиль: http://misc.sunchaser.info/software/psi2jre.zip