|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Attribute. Методы класса Attribute для установки значения, имени и типа атрибута:
Методы класса Attribute для установки значения, имени и типа атрибута: Attribute setAttributeType(int type) – устанавливает тип атрибута; Attribute setName(String name) – устанавливает имя атрибута; Attribute setValue(String value) – устанавливает значение атрибута. Следующий пример демонстрирует создание XML-документа и запись его в файл. Для записи XML-документа используется класс XMLOutputter. /* пример # 10: создание и запись документа с помощью JDOM: JDOMLogic.java */ package chapt16.saver.dom; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Iterator; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.XMLOutputter; import chapt16.entity.Student;
public class JDOMLogic { public static Document create(List<Student> list) { //создание корневого элемента <studentsnew> Element root = new Element("studentsnew"); Iterator<Student> studentIterator = list.iterator(); while (studentIterator.hasNext()) { Student student = studentIterator.next(); //создание элемента <student> и его содержимого Element studentElement = new Element("student"); //создание атрибутов и передача им значений studentElement.setAttribute("login", student.getLogin()); studentElement.setAttribute("phone", student.getTelephone());
Element faculty = new Element("faculty"); faculty.setText(student.getFaculty()); //«вложение» элемента <faculty> в элемент <student> studentElement.addContent(faculty);
Element name = new Element("name"); name.setText(student.getName()); studentElement.addContent(name); //создание элемента <address> Element addressElement = new Element("address"); Student.Address address = student.getAddress();
Element country = new Element("country"); country.setText(address.getCountry()); addressElement.addContent(country);
Element city = new Element("city"); city.setText(address.getCity()); addressElement.addContent(city);
Element street = new Element("street"); street.setText(address.getStreet()); // «вложение» элемента <street> в элемент <address> addressElement.addContent(street); //«вложение» элемента <address> в элемент <student> studentElement.addContent(addressElement); //«вложение» элемента <student> в элемент <students> root.addContent(studentElement); } //создание основного дерева XML-документа return new Document(root); } public static boolean saveDocument(String fileName, Document doc) { boolean complete = true; XMLOutputter outputter = new XMLOutputter(); // запись XML-документа try { outputter.output(doc, new FileOutputStream(fileName)); } catch (FileNotFoundException e) { e.printStackTrace(); complete = false; } catch (IOException e) { e.printStackTrace(); complete = false; } return complete; } } /* пример # 11: создание списка и запуск приложения: JDOMMainSaver.java*/ package chapt16.main; import java.io.IOException; import java.util.ArrayList; import chapt16.entity.Student; import chapt16.saver.dom.JDOMLogic;
public class JDOMMainSaver { public static void main(String[] args) { //создание списка студентов ArrayList<Student> students = new ArrayList<Student> (); for (int j = 1; j < 3; j++) { Student st = new Student(); st.setName("Petrov" + j); st.setLogin("petr" + j); st.setFaculty("mmf"); st.setTelephone("454556"+ j*3); Student.Address adr = st.getAddress(); adr.setCity("Minsk"); adr.setCountry("BLR"); adr.setStreet("Gaja, " + j); st.setAddress(adr); students.add(st); } //создание «дерева» на основе списка студентов Document doc = JDOMLogic. create (students); //сохранение «дерева» в XML-документе if (JDOMLogic. saveDocument ("studentsnew.xml", doc)) System. out. println("Документ создан"); Else System. out. println("Документ НЕ создан"); } } В результате будет создан документ studentsnew.xml следующего содержания: <?xml version="1.0" encoding="UTF-8"?> <studentsnew> <student login="petr1" phone="4545563"> <faculty>mmf</faculty> <name>Petrov1</name> <address> <country>BLR</country> <city>Minsk</city> <street>Gaja, 1</street> </address> </student> <student login="petr2" phone="4545566"> <faculty>mmf</faculty> <name>Petrov2</name> <address> <country>BLR</country> <city>Minsk</city> <street>Gaja, 2</street> </address> </student> </studentsnew> В этом примере был использован JDOM, основанный на идее "if something doesn't work, fix it". StAX StAX (Streaming API for XML), который еще называют pull-парсером, включен в JDK, начиная с версии Java SE 6. Он похож на SAX отсутствием объектной модели в памяти и последовательным продвижением по XML, но в StAX не требуется реализация интерфейсов, и приложение само командует StAX-парсеру перейти к следующему элементу XML. Кроме того, в отличие от SAX, данный парсер предлагает API для создания XML-документа. Основными классами StAX являются XMLInputFactory, XMLStreamReader и XMLOutputFactory, XMLStreamWriter, которые соответственно используются для чтения и создания XML-документа. Для чтения XML надо получить ссылку на XMLStreamReader: StringReader stringReader = new StringReader(xmlString); XMLInputFactory inputFactory=XMLInputFactory.newInstance(); XMLStreamReader reader = inputFactory .createXMLStreamReader(stringReader); после чего XMLStreamReader можно применять аналогично интерфейсу Iterator, используя методы hasNext() и next(): boolean hasNext() – показывает, есть ли еще элементы; int next() – переходит к следующей вершине XML, возвращая ее тип. Возможные типы вершин: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.) |