Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> convert json to atom (xml) 
:(
    Опции темы
Samotnik
Дата 14.4.2010, 18:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



привет. 
Вообразим, что имеется JSON строка, и из нее срочным образом необходимо получить ATOM  или XML
есть стандартные средства для этого ? 
 smile 
PM MAIL   Вверх
Samotnik
Дата 14.4.2010, 20:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



нашел статью
но чета первый пример от туда не работает.  smile 

Код

import java.io.InputStream;

import net.sf.json.JSON;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.JSONTypes;
import net.sf.json.xml.XMLSerializer;

import org.apache.commons.io.IOUtils;

public class ConvertJSONtoXML {

        public static void main(String[] args) throws Exception {
                InputStream is = 
                        ConvertJSONtoXML.class.getResourceAsStream("sample-json.txt");
                String jsonData = IOUtils.toString(is);
                
                XMLSerializer serializer = new XMLSerializer(); 
                JSON json = JSONSerializer.toJSON( jsonData ); 
                String xml = serializer.write( json );  
                System.out.println(xml);                
                
        }
}


Цитата

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at ConvertJSONtoXML.main(ConvertJSONtoXML.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 13 more


18-я строка это 
Код

  XMLSerializer serializer = new XMLSerializer(); 

PM MAIL   Вверх
dobrolub
Дата 14.4.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



atom или rss формат достаточно простой. а для JSONa выберите простейшую библиотеку.

http://www.json.org/java/
PM   Вверх
Samotnik
Дата 15.4.2010, 00:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



dobrolub, т.е. предлагаеш распарсить json,  а затем xml строить ?
PM MAIL   Вверх
dobrolub
Дата 15.4.2010, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Я думаю - да, особенно если придётся как-то форматировать / преобразовывать данные пришедшие в JSON - пакете.
PM   Вверх
Samotnik
Дата 15.4.2010, 00:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



dobrolub, ok, предположим json распарсил, а для xml  какая библиотека в данном случае лучше подойдет ?
PM MAIL   Вверх
dobrolub
Дата 15.4.2010, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Ну atom такой простой, что я даже не использовал-бы библиотеку. Вот сам посмотри:

Код

<?xml version="1.0" encoding="utf-8"?>
 
<feed xmlns="http://www.w3.org/2005/Atom">
 
    <title>Example Feed</title>
    <subtitle>A subtitle.</subtitle>
    <link href="http://example.org/feed/" rel="self" />
    <link href="http://example.org/" />
    <id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
    <updated>2003-12-13T18:30:02Z</updated>
    <author>
        <name>John Doe</name>
        <email>[email protected]</email>
    </author>
 
    <entry>
        <title>Atom-Powered Robots Run Amok</title>
        <link href="http://example.org/2003/12/13/atom03" />
        <link rel="alternate" type="text/html" href="http://example.org/2003/12/13/atom03.html"/>
        <link rel="edit" href="http://example.org/2003/12/13/atom03/edit"/>
        <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
        <updated>2003-12-13T18:30:02Z</updated>
        <summary>Some text.</summary>
    </entry>
 
</feed>


Поэтому так бы и писал, вручную. Если будет по-русски нужна правильная кодировка и всё.

PM   Вверх
Samotnik
Дата 15.4.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



вобщем остановился на json-lib
появились вопросы, у ATOM  рут тег должен быть
Код

<feed xmlns="http://www.w3.org/2005/Atom">

я пишу
Код

XMLSerializer serializer = new XMLSerializer(); 
JSON json = JSONSerializer.toJSON( jsonData ); 
serializer.setRootName("feed xmlns=\"http://www.w3.org/2005/Atom\"");

мне в ответ
Цитата

Exception in thread "main" nu.xom.IllegalNameException: NCNames cannot start with the character 2f


пишу
Код

XMLSerializer serializer = new XMLSerializer(); 
JSON json = JSONSerializer.toJSON( jsonData ); 
serializer.setRootName("feed");
serializer.setNamespace("xmlns", "http://www.w3.org/2005/Atom");

в ответ 
Цитата

Exception in thread "main" nu.xom.NamespaceConflictException: The xmlns prefix cannot bound to any URI


и че делать ?  smile 
PM MAIL   Вверх
LSD
Дата 15.4.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Samotnik @  15.4.2010,  12:35 Найти цитируемый пост)
и че делать ?

Выкинуть нафиг этот непонятный XMLSerializer, FAQ рулит!
Код

      StreamResult out = new StreamResult(System.out);
      SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
      TransformerHandler handler = tf.newTransformerHandler();
      Transformer transformer = handler.getTransformer();
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
      transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
      handler.setResult(out);
      handler.startDocument();
      handler.startElement("http://www.w3.org/2005/Atom", "", "feed", null);

      handler.startElement("", "", "title", null);
      handler.characters("Title".toCharArray(), 0, 5);
      handler.endElement("", "", "title");

      handler.endElement("http://forum.vingrad.ru/Flame.html", "", "feed");
      handler.endDocument();


Добавлено через 3 минуты и 2 секунды
Кстати возможно в твоем варианте сработает:
Код

serializer.setNamespace("", "http://www.w3.org/2005/Atom");



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Samotnik
Дата 15.4.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



LSD, клева, а как сделать вот такое к примеру
Код

<link href="http://example.org/feed/" rel="self" />

т.е. в теге 2 свойства
PM MAIL   Вверх
LSD
Дата 15.4.2010, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Код

  public static void main(String[] args)
  {
    try
    {
      StreamResult out = new StreamResult(System.out);
      SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
      TransformerHandler handler = tf.newTransformerHandler();
      Transformer transformer = handler.getTransformer();
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
      transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
      handler.setResult(out);
      handler.startDocument();
      handler.startElement("http://www.w3.org/2005/Atom", "", "feed", null);

      writeElement(handler, "", "", "title", "A title", null);

      //<link href="http://example.org/feed/" rel="self" />
      AttributesImpl attributes = new AttributesImpl();
      attributes.addAttribute("", "", "href", "", "http://example.org/feed/");
      attributes.addAttribute("", "", "rel", "", "self");
      writeElement(handler, "", "", "link", null, attributes);

      handler.endElement("http://forum.vingrad.ru/Flame.html", "", "feed");
      handler.endDocument();
    }
    catch(Exception ex)
    {
      logger.error(ex, ex);
    }
  }

  private static void writeElement(TransformerHandler handler, String uri, String localName, String qName, String data, Attributes attr) throws SAXException
  {
    handler.startElement(uri, localName, qName, attr);
    if(data != null && !data.isEmpty())
    {
      handler.characters(data.toCharArray(), 0, data.length());
    }
    handler.endElement(uri, localName, qName);
  }



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Samotnik
Дата 15.4.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



LSD, спасибо, здорово конечно, но хотелось бы разобраться по лучше.
тут читать ? или есть еще где ?  smile
PM MAIL   Вверх
LSD
Дата 15.4.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



А что именно тебя интересует? У ContentHandler не так много методов, и в принципе они достаточно прозрачны.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Samotnik
Дата 15.4.2010, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(LSD @  15.4.2010,  19:11 Найти цитируемый пост)
А что именно тебя интересует? У ContentHandler не так много методов, и в принципе они достаточно прозрачны.

к примеру не выгрузка в консоль, а запись в файл как реализовать ?
PM MAIL   Вверх
LSD
Дата 15.4.2010, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



У StreamResult вместо System.out указать FileOutputStream. И кстати в FAQ который ты не стал читать, именно так и сделано.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1273 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.