26
Янв
2017

Необходимо прочитать XML файл и вывести на экран в заданном формате

Задание: дано два файла xml. Необходимо вывести их на экран как в примере.

1.xml

<?xml version="1.0" encoding="windows-1251"?>
<note>
    <to>Леша</to>
    <from>Женя</from>
    <heading>Привет</heading>
    <body>Привет, друг!</body>
</note>

2.xml

<?xml version="1.0" encoding="windows-1251"?>
<note>
    <to>Маша</to>
    <from>Рита</from>
    <heading>Завтра</heading>
    <body>Не забудь принести подарок!</body>
</note>

Пример:

От: 
Леша
Маша
Кому: и т.д. 

Так вот. Я могу написать код для двух xml, но они выводятся на экран один за другим (содержимое 1-го файла и следом содержимое 2-го), не так, как в примере.

import java.io.BufferedWriter;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;

public class лаба3
{
    public static void main(String[] args)
    {
        try
        {
            File fXmlFile = new File("C:/ee.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("note");
            for (int temp = 0; temp < nList.getLength(); temp++)
            {
                Node nNode = nList.item(temp);
                {
                    Element eElement = (Element) nNode;
                    System.out.println("От: " + eElement.getElementsByTagName("to").item(0).getTextContent());
                    System.out.println("Кому: " + eElement.getElementsByTagName("from").item(0).getTextContent());
                    System.out.println("Тема: " + eElement.getElementsByTagName("heading").item(0).getTextContent());
                    System.out.println("Сообщение: " + eElement.getElementsByTagName("body").item(0).getTextContent());
                }
            }

            File fXmlFile2 = new File("C:/e.xml");
            DocumentBuilderFactory dbFactory2 = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder2 = dbFactory2.newDocumentBuilder();
            Document doc2 = dBuilder2.parse(fXmlFile2);
            doc2.getDocumentElement().normalize();
            NodeList nList2 = doc2.getElementsByTagName("note");
            for (int temp = 0; temp < nList2.getLength(); temp++)
            {
                Node nNode2 = nList2.item(temp);
                {
                    Element eElement = (Element) nNode2;
                    System.out.println("От: " + eElement.getElementsByTagName("to").item(0).getTextContent());
                    System.out.println("Кому: " + eElement.getElementsByTagName("from").item(0).getTextContent());
                    System.out.println("Тема: " + eElement.getElementsByTagName("heading").item(0).getTextContent());
                    System.out.println("Сообщение: " + eElement.getElementsByTagName("body").item(0).getTextContent());
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

П.С. - можно ли объединить два for и Node в одно?

Источник: https://ru.stackoverflow.com/questions/619758/%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE-%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-xml-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B8-%D0%B2%D1%8B%D0%B2%D0%B5%D1%81%D1%82%D0%B8-%D0%BD%D0%B0-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D0%B2-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%BC-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5

Share

Тебе может это понравится...