Problem z wczytywaniem plików XML

0

Szanowni forumowicze, mam pytanie. Jak to zmodyfikować, żebym mógł wczytywać do obróbki wszystkie pliki będące w katalogu, a nie jak jest w niniejszym programie, odwoływać sie do konkretnego pliku?? Kombinowałem z referencjami, ale nie za bardzo mi wychodziło. Poniżej umieszczam treść kodu :

import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class XML {

public static void main(String argv[]) {

   try {
	String filepath = "C:/Users/mwrona/Desktop/file.xml";
	DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
	Document doc = docBuilder.parse(filepath);


	Node company = doc.getFirstChild();


	Node delivery = doc.getElementsByTagName("Order").item(0);

	Element age = doc.createElement("DOstawaBezposrednia");
	age.appendChild(doc.createTextNode("gdansk"));
	delivery.appendChild(age);

	
	NodeList list = delivery.getChildNodes();

	for (int i = 0; i < list.getLength(); i++) {

               Node node = list.item(i); 		                  
	}

	TransformerFactory transformerFactory = TransformerFactory.newInstance();
	Transformer transformer = transformerFactory.newTransformer();
	DOMSource source = new DOMSource(doc);
	StreamResult result = new StreamResult(new File(filepath));
	transformer.transform(source, result);

	System.out.println("Done");

   } catch (ParserConfigurationException pce) {
	pce.printStackTrace();
   } catch (TransformerException tfe) {
	tfe.printStackTrace();
   } catch (IOException ioe) {
	ioe.printStackTrace();
   } catch (SAXException sae) {
	sae.printStackTrace();
   }
}

}

0

Przerobiłem to tak.

import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class XML {

public static void main(String argv[]) 
    {

   try {
	String filepath = "C:/Users/mwrona/Desktop/file.xml";
            File fXmlFile = new File("C:/Users/mwrona/Desktop/XMLe/");
	DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
	Document doc = docBuilder.parse(fXmlFile);

	Node nList = doc.getElementsByTagName("Order").item(0);

	Element age = doc.createElement("DOstawaBezposrednia");
	age.appendChild(doc.createTextNode("gdansk"));
	nList.appendChild(age);
            
	
	NodeList list = nList.getChildNodes();
            
	for (int i = 0; i < list.getLength(); i++) {

               Node node = list.item(i);

	}
            


	TransformerFactory transformerFactory = TransformerFactory.newInstance();
	Transformer transformer = transformerFactory.newTransformer();
	DOMSource source = new DOMSource(doc);
	StreamResult result = new StreamResult(new File(filepath));
	transformer.transform(source, result);

	System.out.println("Done");
    
   } catch (ParserConfigurationException pce) {
	pce.printStackTrace();
   } catch (TransformerException tfe) {
	tfe.printStackTrace();
   } catch (IOException ioe) {
	ioe.printStackTrace();
   } catch (SAXException sae) {
	sae.printStackTrace();
   }
}

}

Kupa się robi w tym miejscsu " Document doc = docBuilder.parse(fXmlFile); " .[Fatal Error] 1: Content is not allowed in prolog. Coś mam źle z tą scieżką, ale nie kumam co.

0

Wtf?

File fXmlFile = new File("C:/Users/mwrona/Desktop/XMLe/");
...
Document doc = docBuilder.parse(fXmlFile);

Przecież zmienna fXmlFile nie reprezentuje pliku, tylko katalog. Wywołaj metodę list() by dostać listę plików w katalogu i parsuj te pliki, które są typu xml.

1 użytkowników online, w tym zalogowanych: 0, gości: 1