Рубрики
Без рубрики

Пример редактирования XML-файла JDOM

JDOM Пример редактирования XML-файла, Java JDOM, Пример JDOM, Исключение JDOMException, SAXBuilder, Элемент, Пространство имен, Редактирование XML-файла на Java, Пример редактирования файла Java XML

Автор оригинала: Pankaj Kumar.

JDOM предоставляет очень удобный способ управления XML-файлами, использование JDOM очень простое, а код выглядит чистым и читаемым. Ранее мы видели, как читать XML с помощью JDOM и как писать XML с помощью JDOM . Здесь мы узнаем, как легко мы можем редактировать XML – файлы с помощью JDOM.

JDOM Редактировать XML-файл

Для этого урока у нас есть следующее employees.xml файл.



  
    25
    Pankaj
    Male
    Java Developer
  
  
    34
    Mona
    Female
    Manager
  
  
    45
    Dave
    Male
    Support
  

Мы хотим изменить следующее для каждого элемента Employee в XML.

  1. Обновите все элементы имени до прописных букв.
  2. Добавьте M для мужчин и F для женщин в атрибут ID.
  3. Удалить гендерный элемент
  4. Добавьте новый элемент зарплата со значением по умолчанию 1000 для каждого сотрудника

Пример JDOM – Редактирование XML-файла

Вот программа java для вышеуказанных изменений.

package com.journaldev.xml.jdom;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.Namespace;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;


public class JDOMXMLEditor {

    public static void main(String[] args) throws JDOMException, IOException {
        final Namespace ns = Namespace.getNamespace("https://www.journaldev.com/employees");

        //Get the JDOM document
        org.jdom2.Document doc = useSAXParser("employees.xml");

        //Get list of Employee element
        Element rootElement = doc.getRootElement();
        List listEmpElement = rootElement.getChildren("Employee", ns);

        //loop through to edit every Employee element
        for (Element empElement : listEmpElement) {

            //change the name to BLOCK letters
            String name = empElement.getChildText("name", ns);
            if (name != null)
                empElement.getChild("name", ns).setText(name.toUpperCase());

            //edit the ID attribute based on Gender
            String gender = empElement.getChildText("gender", ns);
            if (gender != null && gender.equalsIgnoreCase("female")) {
                String id = empElement.getAttributeValue("id");
                empElement.getAttribute("id").setValue(id + "F");
            } else {
                String id = empElement.getAttributeValue("id");
                empElement.getAttribute("id").setValue(id + "M");
            }

            //remove gender element as it's not needed anymore
            empElement.removeChild("gender", ns);

            //add salary element with default value to every employee
            empElement.addContent(new Element("salary", ns).setText("1000"));
        }

        //document is processed and edited successfully, lets save it in new file
        XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
        //output xml to console for debugging
        //xmlOutputter.output(doc, System.out);
        xmlOutputter.output(doc, new FileOutputStream("employees_new.xml"));
    }


    //Get JDOM document from SAX Parser
    private static org.jdom2.Document useSAXParser(String fileName) throws JDOMException,
            IOException {
        SAXBuilder saxBuilder = new SAXBuilder();
        return saxBuilder.build(new File(fileName));
    }

}

Обратите внимание на использование пространства имен для извлечения всех элементов. Вышеуказанная программа выдает следующий выходной xml.

Обратите внимание на использование пространства имен для извлечения всех элементов. Вышеуказанная программа выдает следующий выходной xml.



  
    25
    PANKAJ
    Java Developer
    1000
  
  
    34
    MONA
    Manager
    1000
  
  
    45
    DAVE
    Support
    1000
  

Это все для примера JDOM для редактирования XML-файла на java.