Задание: дано два файла 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 в одно?
Свежие комментарии