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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в XML 
:(
    Опции темы
Stallionf1
Дата 6.5.2011, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 27.4.2011

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



Народ, подскажите, пожалуйста, как сделать запись в XML файл данных.
К примеру есть массивы Логинов и Паролей....как сделать , к примеру следующий XML файл :

Код

<?xml version = "1.0"?>
<user>
    <login>Vasya</login>
    <pass>Pupkin123</pass>
</user>


PM MAIL   Вверх
Stolzen
Дата 6.5.2011, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Несколько способов:

1) Построить самому
Код

public class XmlString {
    public static void main(String[] args) {
        ArrayList<User> users = new ArrayList<User>();
        users.add(new User("Vasya", "Pupkin"));
        
        StringBuilder sb = new StringBuilder();
        
        sb.append("<?xml version = \"1.0\"?>\n");
        
        for (int i = 0; i < users.size(); ++i) {
            User u = users.get(i);
            sb.append("<user>\n");
            sb.append("\t<login>").append(u.name).append("</login>\n");
            sb.append("\t<pass>").append(u.pass).append("</pass>\n");
            sb.append("</user>\n\n");
        }
        
        System.out.println(sb);
    }
}

Быстро, подходит для небольших классов. 

2) DOM
Код

import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class XmlDom {
    public static void main(String[] args) throws ParserConfigurationException, TransformerException {
        ArrayList<User> users = new ArrayList<User>();
        users.add(new User("Vasya", "Pupkin"));

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.newDocument();

        for (int i = 0; i < users.size(); ++i) {
            User u = users.get(i);
            Element user = doc.createElement("user");

            Element login = doc.createElement("login");
            login.appendChild(doc.createTextNode(u.name));

            Element pass = doc.createElement("pass");
            pass.appendChild(doc.createTextNode(u.pass));

            user.appendChild(login);
            user.appendChild(pass);

            doc.appendChild(user);
        }

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(System.out);
        transformer.transform(source, result);
    }
}

Долго, неудобно, много кода, кучи подключенных классов. DOM лучше использовать для парсинга.

3) JAXB
Кода еще больше, причем код в XML, зато потом очень удобен в использовании. Если классов, которые нужно будет перегонять в XML, будет очень много, то лучше использовать JAXB.



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
magicfly
Дата 11.5.2011, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 21.2.2007

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



Цитата

Кода еще больше, причем код в XML, зато потом очень удобен в использовании. 

Есть возможность сделать это на анотациях. Поэтому кода намного меньше
PM MAIL   Вверх
powerOn
Дата 11.5.2011, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Смотрите Velocity / FreeMarker. На текстовых шаблонах удобнее и кода меньше.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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